Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2014, 19:23   #1
Nikolas_555
Пользователь
 
Аватар для Nikolas_555
 
Регистрация: 16.11.2013
Сообщений: 47
Вопрос правильно ли написана процедура?

здравствуйте, форумчане
у меня на форме массив SpeedButton'ов, имя ему Buttons. индексы - как показано на скрине:



вот код процедуры:

Код:
procedure WIN_obl(Sender: TObject);
Begin
//   X   [1]
  if (buttons[1 ].Tag1=1) and (buttons[2 ].Tag1=1) and (buttons[3 ].Tag1=1) or
     (buttons[10].Tag1=1) and (buttons[11].Tag1=1) and (buttons[12].Tag1=1) or
     (buttons[19].Tag1=1) and (buttons[20].Tag1=1) and (buttons[21].Tag1=1) or
     (buttons[1 ].Tag1=1) and (buttons[10].Tag1=1) and (buttons[19].Tag1=1) or
     (buttons[2 ].Tag1=1) and (buttons[11].Tag1=1) and (buttons[20].Tag1=1) or
     (buttons[3 ].Tag1=1) and (buttons[12].Tag1=1) and (buttons[21].Tag1=1) or
     (buttons[1 ].Tag1=1) and (buttons[11].Tag1=1) and (buttons[21].Tag1=1) or
     (buttons[3 ].Tag1=1) and (buttons[11].Tag1=1) and (buttons[19].Tag1=1)
  then
   Begin
     ImagesWin[1].Visible:=True;
     ImagesWin[1].Picture.LoadFromFile('C:\Pictures\X_win_obl.bmp');
   End;

End;
так вот, работа процедуры(пока только для первой области):

если определенная тройка элементов массива имеют определенный Tag1, то показывается картинка из массива имеджей, ImagesWin.

внимание, вопрос: почему процедура тупо не воспринимается программой? просто не работает, и всё. что-то с алгоритмом?
P.S. очень надеюсь на вашу помощь.
Nikolas_555 вне форума Ответить с цитированием
Старый 16.05.2014, 19:44   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Во-первых: Поставь туда точку прерывания и увидишь воспринимается или нет.
Во-вторых: Я предпочитаю писать так:
Код:
if ((buttons[1 ].Tag1=1) and (buttons[2 ].Tag1=1) and (buttons[3 ].Tag1=1)) or...
Т.е. явно указывать приоритет операций.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.05.2014, 19:49   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Я предпочитаю писать так:
Это не предпочтение, а обязательное условие для данной проверки. И если уж это буттоны в массиве, то все эти проверки можно и нужно циклами организовать по всем 9 областям.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.05.2014, 20:03   #4
Nikolas_555
Пользователь
 
Аватар для Nikolas_555
 
Регистрация: 16.11.2013
Сообщений: 47
По умолчанию

так, понял на счет скобок. поставил. результат не изменился. картинка не появляется

Цитата:
Сообщение от Stilet Посмотреть сообщение
Поставь туда точку прерывания и увидишь воспринимается или нет.
а тут просто не понял. что значит "точка прерывания"?

Последний раз редактировалось Stilet; 17.05.2014 в 14:32.
Nikolas_555 вне форума Ответить с цитированием
Старый 17.05.2014, 13:26   #5
ksvsvk
Пользователь
 
Регистрация: 10.06.2013
Сообщений: 25
По умолчанию

Поставь курсор на нужную строку и нажми [Ctrl]+[F8]. Строка станет красной. Это и есть "точка прерывания". Когда отладчик до нее дойдет, выполнение программы остановится.
ksvsvk вне форума Ответить с цитированием
Старый 17.05.2014, 13:47   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

это судоку чтоли?
а почему тут батоны?
eval вне форума Ответить с цитированием
Старый 17.05.2014, 17:45   #7
Nikolas_555
Пользователь
 
Аватар для Nikolas_555
 
Регистрация: 16.11.2013
Сообщений: 47
По умолчанию

Цитата:
Сообщение от ksvsvk Посмотреть сообщение
Поставь курсор на нужную строку и нажми [Ctrl]+[F8]. Строка станет красной. Это и есть "точка прерывания".
странно, она не становится красной у меня Delphi2007.

Цитата:
Сообщение от eval Посмотреть сообщение
это судоку чтоли?.
нет, это альтернативные крестики-нолики.

http://www.pvsm.ru/matematika/36819

Последний раз редактировалось Nikolas_555; 18.05.2014 в 08:43.
Nikolas_555 вне форума Ответить с цитированием
Старый 17.05.2014, 19:26   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
[Ctrl]+[F8]
F5 а не [Ctrl]+[F8]
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.05.2014, 20:04   #9
Nikolas_555
Пользователь
 
Аватар для Nikolas_555
 
Регистрация: 16.11.2013
Сообщений: 47
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
F5 а не [Ctrl]+[F8]
другое дело. ну, поставил эту точку прерывания, на строку, перед if'ом, итог тот же самый - прога работает, но при определенных кликах на speedbutton'ы картинки не выдаёт просто полный игнор всей процедуры?

тут я подумал, может в процедуре самого клика что-то не так?
Код:
procedure TForm6.ButtonA1Click(Sender: TObject);
begin
     if (kol mod 2 <> 0) then
                          begin
                           ImageList1.GetBitMap(1,TSpeedButton(Sender).Glyph);
                         Buttons[i].Tag1:=1;
                          end

                         else
                          Begin
                           ImageList1.GetBitMap(2,TSpeedButton(Sender).Glyph);
                           Buttons[i].Tag1:=2;
                          End;
     F := False;
     kol:=kol+1;
End;
ну, думаю, поняли смысл - при четных\нечетных кликах меняется картинка у элемента массива buttons, и ему присваивается определенный Tag.
Nikolas_555 вне форума Ответить с цитированием
Старый 17.05.2014, 20:34   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

этот огород уже сильно зарос бурьяном, надо брать бульдозер, сносить все начисто и сажать по новой
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
правильно программа написана на си? Tolian92 Помощь студентам 2 14.05.2012 12:09
правильно программа написана на си? Tolian92 Помощь студентам 2 24.01.2012 00:20
Правильно ли написана процедура для Java native метода? LexaL Общие вопросы Delphi 0 04.05.2011 16:43
Правильно ли написана программа в С Денис999 Помощь студентам 1 30.05.2010 17:21
Правильно ли написана програма (с++) ? Alex1991 Помощь студентам 1 28.03.2009 15:52