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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2012, 22:00   #1
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
Сообщение case ... of как упростить?

Подскажите, как можно упростить ниже показанный код:
Код:
// Получение данных
 case ComboBox1.ItemIndex of

 0:
   begin
     m1:= 13;
   end;
 1:
   begin
     m1:= 15;
   end;
 2:
   begin
     m1:= 52;
   end;
 3:
   begin
     m1:= 42;
   end;
 4:
   begin
     m1:= 52;
   end;
 5:
   begin
     m1:= 56;
   end;
 6:
   begin
     m1:= 110;
   end;
 7:
   begin
     m1:= 178;
   end;

 end;

 case ComboBox2.ItemIndex of

 0:
   begin
     m2:= 13;
   end;
 1:
   begin
     m2:= 15;
   end;
 2:
   begin
     m2:= 52;
   end;
 3:
   begin
     m2:= 42;
   end;
 4:
   begin
     m2:= 52;
   end;
 5:
   begin
     m2:= 56;
   end;
 6:
   begin
     m2:= 110;
   end;
 7:
   begin
     m2:= 178;
   end;
 8:
   begin
     m2:= 0;
   end;

 end;

 case ComboBox3.ItemIndex of

 0:
   begin
     m3:= 13;
   end;
 1:
   begin
     m3:= 15;
   end;
 2:
   begin
     m3:= 52;
   end;
 3:
   begin
     m3:= 42;
   end;
 4:
   begin
     m3:= 52;
   end;
 5:
   begin
     m3:= 56;
   end;
 6:
   begin
     m3:= 110;
   end;
 7:
   begin
     m3:= 178;
   end;
 8:
   begin
     m3:= 0;
   end;

 end;
kta87 вне форума Ответить с цитированием
Старый 29.01.2012, 22:16   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
const cConst1: array [0..7] of Integer = (13,15,52,42,52,56,110,178);
...
  if (ComboBox1.ItemIndex>=Low(cConst1)) and (ComboBox1.ItemIndex<=High(cConst1)) then m1:=cConst1[ComboBox1.ItemIndex];
//или просто если 100% ComboBox1.ItemIndex>=0 и ComboBox1.ItemIndex<=7
  m1:=cConst1[ComboBox1.ItemIndex];
... остальные аналогично с другим массивом констант
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.01.2012, 22:45   #3
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

если begin ... end убрать компактней будет
_Engine_ вне форума Ответить с цитированием
Старый 29.01.2012, 23:21   #4
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
const cConst1: array [0..7] of Integer = (13,15,52,42,52,56,110,178);
...
  if (ComboBox1.ItemIndex>=Low(cConst1)) and (ComboBox1.ItemIndex<=High(cConst1)) then m1:=cConst1[ComboBox1.ItemIndex];
//или просто если 100% ComboBox1.ItemIndex>=0 и ComboBox1.ItemIndex<=7
  m1:=cConst1[ComboBox1.ItemIndex];
... остальные аналогично с другим массивом констант
Спасибо за интересное решение!
kta87 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как упростить формулу? АННА-ЕАО Microsoft Office Excel 7 23.12.2011 14:53
как возможно упростить? monogramm Общие вопросы по Java, Java SE, Kotlin 3 01.06.2011 01:40
Как можно упростить программу? Евгений92 Общие вопросы C/C++ 0 07.11.2010 17:50
sql запрос - как упростить forzi БД в Delphi 7 06.04.2010 11:57
Как упростить формулу? parsn Microsoft Office Excel 1 31.01.2010 00:53