Главная страница
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.025 c
2-1218997207
Alral
2008-08-17 22:20
2008.09.28
Обращение к модулю из другого


3-1206562057
Fin
2008-03-26 23:07
2008.09.28
Узнать Значение счётчика


2-1218656904
antonn
2008-08-13 23:48
2008.09.28
вопросик по Tthread


2-1218790822
Vlad Oshin
2008-08-15 13:00
2008.09.28
Интерфейс. Как бы сделать?


3-1207138799
tomkat
2008-04-02 16:19
2008.09.28
описание UDFS.DLL