|
#1
|
|||
|
|||
Оптимизация кода
Как оптимизировать данный код? Повторяется до 9 раз. Может как-то наследовать можно? В основном там только меняется индекс "кнопки"
|
#2
|
||||
|
||||
Думаю, можно по аналогии с данным кодом:
Код:
for i := 0 to form2.ComponentCount-1 do if (form2.Components[i] is TButton) then (form2.Components[i] as TButton).Visible:= true; А все остальное: 1. Использовать CASE 2. Использовать переменную для имени файла, а саму процедуру загрузки вызывать единожды 3. Повторяющиеся операции выделить в отдельную процедуру\функцию Последний раз редактировалось Vayrus, 06.05.2018 в 15:18. |
Этот пользователь сказал Спасибо Vayrus за это полезное сообщение: | ||
mattafix (06.05.2018)
|
#3
|
|||
|
|||
Спасибо. Правда 2 не совсем понял
|
#4
|
||||
|
||||
Цитата:
Ну если код скинешь с объявленными переменными, то напишу, как должно быть, а то со скриншотами не комильфо работать) |
#5
|
||||
|
||||
Предположу, что cellN - это кнопки. Если создаете их в Run-time, то при создании задайте свойство Tag. Если кнопки созданы в Design-time (полагаю так и есть), то сразу задайте это свойство каждой кнопке.
Так же предположу что это крестики-нолики с полем 3х3 (хотя не важно), поэтому можно сделать: Tag := cell_num + row_num * 10; Задайте нажатию всем кнопок одно событие: Код:
procedure TForm1.CellClick(Sender: TObject); const PIC_FILE: array [Boolean] of string = ('<file_name_for_X.jpg>', '<file_name_for_O.jpg>'); var cell, row: Integer; begin row := TButton(Sender).Tag div 10; cell := TButton(Sender).Tag mod 10; A[row, cell] := Byte(count); TButton(Sender).Picture.LoadFromFile(PIC_FILE[count]); TButton(Sender).Enabled := False; count := not count; check; end; Ну а проверку на победу однозначно можно укоротить. Однако не совсем понятно, какие переменные вы используете, какие данные храните и т.п. Не стоит выкладывать код скриншотами. Для этого есть специальный тэг. Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |