Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сократить


Stif ©   (2008-06-25 15:18:00) 

Как записать алгоритм сравнения по-другому. Пробывал через In но не получилось (... in [-2..0]).

if Assigned(ModelsPanel) then
   with ModelsPanel.FDataLinkModel do
     Enabled := (Field.AsInteger <> -1) and (Field.AsInteger <> -2)
       and (Field.AsInteger <> 0);


Anatoly Podgoretsky   (2008-06-25 17:27:00) [1]

> ciborg  (25.06.2008 17:08:11)  [11]

Это он зря, он же не знает, насколько тут продвинутый форум, столько разного насоветуют, глаза разбегутся.
Лучше бы объяснил зачем сокращать, когда это самая наглядная форма, сразу все видно без ломания мозгов или объяснения от разработчика.


ciborg   (2008-06-25 17:08:00) [2]

:)
Человек спрашивал как по-другому записать.


Anatoly Podgoretsky   (2008-06-25 17:01:00) [3]

> ciborg  (25.06.2008 15:41:02)  [2]

Field = 300
Не говоря уже о том, что затуманиваешь алгоритм, по мозгам бьешь, насилие.


Anatoly Podgoretsky   (2008-06-25 17:01:00) [4]

> Игорь Шевченко  (25.06.2008 16:07:05)  [5]

А за [2] с многократным воскрешением.


ciborg   (2008-06-25 16:21:00) [5]

Еще вот так можно:
 
 case Field.AsInteger of
   -2, -1, 0: Enabled := False;
   else
     Enabled := True;
 end;

Если много условий, идущих не по порядку, код сокращается.


Игорь Шевченко   (2008-06-25 16:18:00) [6]

извращенцы


Тын-Дын   (2008-06-25 16:14:00) [7]

var
 En: Boolean;
 i: integer;
begin
 i := 0;
 En := not (-i in [2,1,0]);
 if en then ShowMessage('Ok');


Игорь Шевченко   (2008-06-25 16:07:00) [8]


> Enabled := Abs((Field.AsInteger + 1) > 1


а за такое бы убил :)


MBo   (2008-06-25 15:50:00) [9]

Enabled := Abs((Field.AsInteger + 1) > 1

но это непонятно с первого взгляда, что может быть не очень хорошо с точки зрения поддержки


Игорь Шевченко   (2008-06-25 15:44:00) [10]


> Enabled := (Field.AsInteger <> -1) and (Field.AsInteger
> <> -2)
>        and (Field.AsInteger <> 0);


я бы так оставил


ciborg   (2008-06-25 15:41:00) [11]

Enabled := not (Field.AsInteger + 2 in [0..2]);


Palladin   (2008-06-25 15:19:00) [12]

<-2 or >0


Наверх

Титульная страница Поиск, карта сайта Написать письмо