Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.05.2018, 13:41
mattafix mattafix вне форума
Прохожий
 
Регистрация: 06.05.2018
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Оптимизация кода

Как оптимизировать данный код? Повторяется до 9 раз. Может как-то наследовать можно? В основном там только меняется индекс "кнопки"
Изображения
Тип файла: png 1.png (133.4 Кбайт, 8 просмотров)
Тип файла: png 2.png (124.0 Кбайт, 7 просмотров)
Ответить с цитированием
  #2  
Старый 06.05.2018, 15:11
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
Восклицание

Думаю, можно по аналогии с данным кодом:

Код:
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  
Старый 06.05.2018, 15:27
mattafix mattafix вне форума
Прохожий
 
Регистрация: 06.05.2018
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Спасибо. Правда 2 не совсем понял
Ответить с цитированием
  #4  
Старый 06.05.2018, 15:31
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
По умолчанию

Цитата:
Сообщение от mattafix
Спасибо. Правда 2 не совсем понял

Ну если код скинешь с объявленными переменными, то напишу, как должно быть, а то со скриншотами не комильфо работать)
Ответить с цитированием
  #5  
Старый 06.05.2018, 19:53
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 660
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Предположу, что 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% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:05.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter