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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2013, 21:52   #1
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию Как правильно заменить данную часть кода?

Как можно более грамотно записать данный код?
Код:
begin
  ...
  if ... then ...;
  if ... then ...;
  if ... then ...;
  if ... then ...;
  if ... then ...;
  if ... then ...;
  if ... then ...;
  if ... then ...;
  if ... then ...;
  if ... then ...;
  if ... then ...;
  if ... then ...;
  if ... then ...;
  ...
end;
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 04.01.2013, 22:02   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

сase of //
Человек_Борща вне форума Ответить с цитированием
Старый 04.01.2013, 22:07   #3
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

ИМХО, в данном примере никак.
Всё зависит от ситуации... возможно, получится в цикл завернуть, если условия более-менее однородные, а может и не получится; может case подойдёт, а может не подойдёт и т.д. и т.п.
eoln вне форума Ответить с цитированием
Старый 04.01.2013, 22:08   #4
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
сase of //
т.е. если мне надо так:
Код:
  if ColSel2 = $000010 then Label1.Caption:= 'объект 10';
  if ColSel2 = $000000 then Label1.Caption:= 'объект 00';
  if ColSel2 = $000001 then Label1.Caption:= 'объект 01';
  if ColSel2 = $000002 then Label1.Caption:= 'объект 02';
  if ColSel2 = $000003 then Label1.Caption:= 'объект 03';
  if ColSel2 = $000004 then Label1.Caption:= 'объект 04';
  if ColSel2 = $000005 then Label1.Caption:= 'объект 05';
  if ColSel2 = $000006 then Label1.Caption:= 'объект 06';
  if ColSel2 = $000007 then Label1.Caption:= 'объект 07';
  if ColSel2 = $000008 then Label1.Caption:= 'объект 08';
  if ColSel2 = $000009 then Label1.Caption:= 'объект 09';
мне теперь так записать:
Код:
case ColSel2 of
  $000010: Label1.Caption:= 'объект 10';
  $000000: Label1.Caption:= 'объект 00';
  $000001: Label1.Caption:= 'объект 01';
  $000002: Label1.Caption:= 'объект 02';
  $000003: Label1.Caption:= 'объект 03;
  $000004: Label1.Caption:= 'объект 04';
...
end;
правильно?
даешь высокое напряжение

Последний раз редактировалось Vova777; 04.01.2013 в 22:13.
Vova777 вне форума Ответить с цитированием
Старый 04.01.2013, 22:12   #5
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

А если мне вот это надо аккуратно оформить, тогда как?
Код:
         if s2[Sinc] = '*' then
         begin
           Image1.Canvas.Draw(Xspt, Yspt, a[10]);
           ColSel:= $000010;
         end;
         if s2[Sinc] = '0' then
         begin
           Image1.Canvas.Draw(Xspt, Yspt, a[0]);
           ColSel:= $000000;
         end;
         if s2[Sinc] = '1' then
         begin
           Image1.Canvas.Draw(Xspt, Yspt, a[1]);
           ColSel:= $000001;
         end;
         if s2[Sinc] = '2' then
         begin
           Image1.Canvas.Draw(Xspt, Yspt, a[2]);
           ColSel:= $000002;
         end;
         if s2[Sinc] = '3' then
         begin
           Image1.Canvas.Draw(Xspt, Yspt, a[3]);
           ColSel:= $000003;
         end;
         if s2[Sinc] = '4' then
         begin
           Image1.Canvas.Draw(Xspt, Yspt, a[4]);
           ColSel:= $000004;
         end;
         if s2[Sinc] = '5' then
         begin
           Image1.Canvas.Draw(Xspt, Yspt, a[5]);
           ColSel:= $000005;
         end;
         if s2[Sinc] = '6' then
         begin
           Image1.Canvas.Draw(Xspt, Yspt, a[6]);
           ColSel:= $000006;
         end;
         if s2[Sinc] = '7' then
         begin
           Image1.Canvas.Draw(Xspt, Yspt, a[7]);
           ColSel:= $000007;
         end;
         if s2[Sinc] = '8' then
         begin
           Image1.Canvas.Draw(Xspt, Yspt, a[8]);
           ColSel:= $000008;
         end;
         if s2[Sinc] = '9' then
         begin
           Image1.Canvas.Draw(Xspt, Yspt, a[9]);
           ColSel:= $000009;
         end;
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 04.01.2013, 23:13   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
правильно?
да.

Цитата:
А если мне вот это надо аккуратно оформить, тогда как?
Код:
var
 iChar:ShortInt;
...
 iChar:=Ord(s2[Sinc]);
 case iChar of
 Ord('1'): ... 
 end;
Но думаю тут и без переменной можно обойтись, и сразу приводить в число.
Человек_Борща вне форума Ответить с цитированием
Старый 05.01.2013, 00:11   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
тогда как?
Тогда так:
Код:
const s='0123456789*';
var i:integer;
...
i:=pos(s2[Sinc],s)-1;
if (i>=low(a)and(i<=high(a)) then
         begin
           Image1.Canvas.Draw(Xspt, Yspt, a[i]);
           ColSel:= i;
         end;
...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
можно ли заменить данную формулу на другую, или упростить? АННА-ЕАО Microsoft Office Excel 8 24.11.2011 10:59
Как защитить часть кода от нежелательного доступа Merovingian PHP 4 21.09.2011 21:46
Как правильно заменить строку WennY Общие вопросы Delphi 5 05.09.2011 09:16
Прокомментировать часть кода Kasper1 Общие вопросы по Java, Java SE, Kotlin 4 08.01.2011 20:42
Открыть файл как Hex найти там некий участок кода, заменить его и сохранить AstraZak Общие вопросы C/C++ 10 05.03.2010 18:58