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

Вниз

Бывает же…   Найти похожие ветки 

 
Yanis ©   (2008-08-07 19:00) [0]

Ничего себе, в какой капкан я угодил по собственной невнимательности. Долго не мог понять в чём подвох в простом коде:

function IfThen(AValue: Boolean; const ATrue: string; const AFalse: string): string;
begin
 if AValue then
   Result := ATrue
 else
   Result := AFalse;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 s: string;
begin
 s := "Test";
 ShowMessage(IfThen(Length(s) > 0, s[1], ""));

 s := "";
 ShowMessage(IfThen(Length(s) > 0, s[1], ""));
end;


Это всё пагубное влияние плюсов с их сокращёнными if-ами :o)


 
Dmitry_s   (2008-08-07 19:04) [1]

:) А чего писать то?


 
Юрий Зотов ©   (2008-08-07 19:13) [2]

Тернарный оператор на Delphi...
:о)


 
{RASkov} ©   (2008-08-07 19:19) [3]

Что-то я не понял в чем фишка :(
Вижу только реальное AV во втором шоумессэдже... s[1] - которое...


 
Dmitry S ©   (2008-08-07 19:21) [4]


> Что-то я не понял в чем фишка
s[1] - которое..

В нем и фишка :)


 
ketmar ©   (2008-08-07 19:37) [5]

>[3] {RASkov} © (2008-08-07 19:19:00)
в том и фишка. потому что при:
a = flag?*s:0; если flag ложь, то *s не вычисляется. на C.

---
Understanding is not required. Only obedience.


 
DVM ©   (2008-08-07 19:38) [6]

Нафига было городить столько кода, когда можно было получить тот же эффект двумя строками.


 
Yanis ©   (2008-08-07 19:48) [7]


> Нафига было городить столько кода, когда можно было получить
> тот же эффект двумя строками.

Согласен — заблудился в трёх соснах. Но при таких ошибках появляется жуткий интерес найти её, потому что сначала начинаешь грешить на компилятор.

Наверное, такая ошибка имеет место быть у людей, которые знакомы с приплюснутыми if-ами :o) Ну или с джававскими.


 
{RASkov} ©   (2008-08-07 19:52) [8]

> [7] Yanis ©   (07.08.08 19:48)
> сначала начинаешь грешить на компилятор.

Вот распространенная ошибка :)



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

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

Наверх




Память: 0.48 MB
Время: 0.02 c
3-1206704399
ASgard
2008-03-28 14:39
2008.09.28
Программно изменить настройки SQL Server 2005


8-1183355108
ZMRaven
2007-07-02 09:45
2008.09.28
Устройство захвата


15-1217299919
Slider007
2008-07-29 06:51
2008.09.28
С днем рождения ! 29 июля 2008 вторник


15-1217791156
Дмитрий_С
2008-08-03 23:19
2008.09.28
Посоветуйте видеоконвертер


15-1217906934
Slider007
2008-08-05 07:28
2008.09.28
С днем рождения ! 5 августа 2008 вторник