Конференция "Прочее" » Бывает же…
 
  • 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.
  • DVM © (07.08.08 19:38) [6]
    Нафига было городить столько кода, когда можно было получить тот же эффект двумя строками.
  • Yanis © (07.08.08 19:48) [7]

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

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

    Наверное, такая ошибка имеет место быть у людей, которые знакомы с приплюснутыми if-ами :o) Ну или с джававскими.
  • {RASkov} © (07.08.08 19:52) [8]
    > [7] Yanis ©   (07.08.08 19:48)
    > сначала начинаешь грешить на компилятор.

    Вот распространенная ошибка :)
Есть новые Нет новых   [134440   +3][b:0][p:0.001]