-
Yanis © (07.08.08 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 (07.08.08 19:04) [1]:) А чего писать то?
-
Юрий Зотов © (07.08.08 19:13) [2]Тернарный оператор на Delphi...
:о) -
{RASkov} © (07.08.08 19:19) [3]Что-то я не понял в чем фишка :(
Вижу только реальное AV во втором шоумессэдже... s[1] - которое... -
Dmitry S © (07.08.08 19:21) [4]
> Что-то я не понял в чем фишка
s[1] - которое..
В нем и фишка :) -
ketmar © (07.08.08 19:37) [5]>[3] {RASkov} © (2008-08-07 19:19:00)
в том и фишка. потому что при:a = flag?*s:0;
если flag ложь, то *s не вычисляется. на C.
---
Understanding is not required. Only obedience. -
Нафига было городить столько кода, когда можно было получить тот же эффект двумя строками.
-
Yanis © (07.08.08 19:48) [7]
> Нафига было городить столько кода, когда можно было получить
> тот же эффект двумя строками.
Согласен — заблудился в трёх соснах. Но при таких ошибках появляется жуткий интерес найти её, потому что сначала начинаешь грешить на компилятор.
Наверное, такая ошибка имеет место быть у людей, которые знакомы с приплюснутыми if-ами :o) Ну или с джававскими. -
{RASkov} © (07.08.08 19:52) [8]> [7] Yanis © (07.08.08 19:48)
> сначала начинаешь грешить на компилятор.
Вот распространенная ошибка :)