Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.07;
Скачать: CL | DM;

Вниз

if Value = True then   Найти похожие ветки 

 
Piter ©   (2009-12-22 19:04) [80]

не говоря уже о том, что мой вариант легко расширяем, допустим, на случай:

TIconType = (itSmall, itBig, itVeryBig);


 
Кто б сомневался ©   (2009-12-22 19:13) [81]


> Кто б сомневался ©   (22.12.09 18:43) [72]
> Я знаю, но там где два значения, удобнее и практичнее использовать
> boolean
>
> твой вариант:
>
> GET_LARGE_ICON = true;
> GET_SMALL_ICON = false;
>
> мой вариант:
>
> TIconType = (itSmall, itBig);
>
> чем твой вариант удобнее, поясни пожалуйста?
>
> насчет практичности - что ты имел

в виду? И то и другое в памяти занимает 1 байт (если ты про это).


Вариант в boolean в функциях используется намного чаще чем в enum типами. в API в VCL - да собственно везде.
Для меня это удобнее

1. Не нужно объявлять при написании функции ничего
2. Не усложняется код в теле функции
3. При работе с функцией, не нужно искать enum тип, обычно приходится жать ctrl + lmb - чтобы посмотреть что там за типы.
4. Не усложняется код, представь если будет куча Enum типов по 2 значения, все б сильно матерились тогда.


 
RWolf ©   (2009-12-22 19:14) [82]

[72][79]
Паскаль — язык со строгой типизацией; раз она есть — надо использовать её преимущества, тут и спорить не о чем.


 
RWolf ©   (2009-12-22 19:17) [83]


Кто б сомневался ©   (22.12.09 19:13) [81]
> GET_LARGE_ICON = true;
> GET_SMALL_ICON = false;

Любую из таких констант можно передать в любую из функций с параметром boolean — а это потенциальные баги.
TIconType из [79] можно передать только в функцию, которая этот тип принимает.


 
Кто б сомневался ©   (2009-12-22 19:18) [84]


> Любую из таких констант можно передать в любую из функций


Ну дык ноги плохому танцору мешают :)
Вобще такие вещи всегда локально объявлены.


 
Piter ©   (2009-12-22 19:57) [85]

Кто б сомневался, судя по всему тут спорить бесполезно. Попробуй у кого-нибудь из delphi профессионалов, кого ты уважаешь, спросить - как будет правильнее на константах или на перечисляемых типах.


 
Кто б сомневался ©   (2009-12-22 20:04) [86]


>  Попробуй у кого-нибудь из delphi профессионалов, кого ты
> уважаешь, спросить - как будет правильнее на константах
> или на перечисляемых типах.


Что значит "правильнее"? и так и так правильно.
Просто вспомни часто ли ты встречал в функциях enum тип из двух значений, и вспомни как часто встречаются boolean в любых функциях будь то win API или VCL или еще что-то . Вот это и будет ответ.
А это просто надстройка над boolean - для более удобного чтения.


 
grammar-nazi   (2009-12-22 20:08) [87]


> RWolf ©   (22.12.09 18:58) [78]
>
> Лучше всё же так:
> procedure TfrxEngineOptions.SetSilentMode(Mode: TSilentMode);
>
> begin  
> FSilentMode := Mode;
> end;


нет, не лучше. SetSilentMode(Mode: Boolean) разрешает установить один из двух режимов, SetSilentMode(Mode: TSilentMode) разрешает установить один из (High(TSilentMode) - Low(TSilentMode) + 1) режимов.


 
Piter ©   (2009-12-22 21:16) [88]

Кто б сомневался ©   (22.12.09 20:04) [86]
Что значит "правильнее"?


то, что вышеописанный уважаемый тобой гуру, посчитает использовать. То есть, чтобы он использовал в такой-то ситации.


 
Virgo_Style ©   (2009-12-22 21:50) [89]


> SetSilentMode(Mode: TSilentMode) разрешает установить один
> из (High(TSilentMode) - Low(TSilentMode) + 1) режимов.


А уж TSilentModes: set of TSilentMode вообще позволяет творить чудеса.

Но это все хорошо при условии, что нужны куча режимов или чудеса.

"Каждому овощу - свой фрукт" - кажется, так говорит кто-то из гуру? ;)


 
oxffff ©   (2009-12-22 22:35) [90]

А если подумать и рассмотреть такой вариант.

function True:integer;
begin
result:=15;
end;

{$R *.dfm}

procedure TForm4.FormCreate(Sender: TObject);
var a:integer;
begin
a:=15;
if a=true then showmessage("GOOD");
end;


 
oxffff ©   (2009-12-22 22:45) [91]

Технически можно сделать так.
Но Delphi 2010 это не хавает.

mytype=record
b:integer;
class operator Equal(a: mytype; b: boolean) : Boolean;
end;

procedure TForm4.FormCreate(Sender: TObject);
var a:mytype;
begin
if a=True then showmessage("Stuff");
end;


 
oxffff ©   (2009-12-22 22:47) [92]


> Но Delphi 2010 это не хавает.


Собственно это проблемы Delphi. :)


 
Rouse_ ©   (2009-12-23 01:34) [93]


> А если подумать и рассмотреть такой вариант.
>
> function True:integer;
> begin
> result:=15;
> end;

технически можно сделать и так:


#define TRUE = FALSE

#define TRUE (!FALSE)

#define FALSE (!TRUE)

#if !defined(FALSE) || FALSE != 0
#define FALSE 0
#endif

#defineTRUE (1==1)


но такая фигня получиться :)


 
Германн ©   (2009-12-23 01:43) [94]


> Rouse_ ©   (23.12.09 01:34) [93]

Извращенец высшего класса получится! (Без мягкого знака :)


 
Дмитрий Белькевич   (2009-12-23 02:32) [95]

#define TRUE (Math.random() > 0.5)
#define FALSE (Math.random() < 0.5)


 
Джо ©   (2009-12-23 02:40) [96]

Какой же бессмысленный и беспощадный этот цэпэпэ! :)


 
Аноним ©   (2009-12-23 02:45) [97]


> StriderMan ©   (22.12.09 12:38) [11]

шикарно
а зачем пост Piter`а то удалили?


 
Аноним ©   (2009-12-23 02:50) [98]


> Тут раз в три месяца выплывает очередной правдоруб со своими
> представлениями что хотел сказать автор, на что автору кода
> обычно дефекабельно...

зато как фекабельно остальным



Страницы: 1 2 3 вся ветка

Текущий архив: 2010.03.07;
Скачать: CL | DM;

Наверх




Память: 0.64 MB
Время: 0.018 c
6-1213405371
antoxa2005
2008-06-14 05:02
2010.03.07
Подскажите, а как добавить вложение к письму стандарного mail аге


2-1262601063
dragon3232
2010-01-04 13:31
2010.03.07
помогите с заданием


15-1261220394
@!!ex
2009-12-19 13:59
2010.03.07
Где прочитать отзывы про WiMax оборудование?


3-1235913922
sco
2009-03-01 16:25
2010.03.07
ошибка в SQL коде


2-1262455962
antonn
2010-01-02 21:12
2010.03.07
из регулярной процедуры в экземпляр класса