IfThen ist im Delphi eine Prozedur.
In C und z.B.
SQL/Postgres ist es (IIF) ein Makro.
Beim Makro werden die Parameter nur ausgeführt, wenn sie genutzt werden, also der nicht getroffene Teil wird dann nicht ausgeführt.
In Delphi werden vor Aufruf der Funktion
alle Parameter ausgeführt.
Sowas kannst du in Delphi also nicht machen:
IfThen(Assigned(xxx), xxx.ToString, '(nil)')
Leider weigert sich Embarcadero wehement zumindestens die Definition einfacher Makros zu implementieren.
Delphi-Quellcode:
function aaa: string;
begin
ShowMessage('aaa');
Result := 'a';
end;
function bbb: string;
begin
ShowMessage('bbb');
Result := 'b';
end;
ShowMessage(IfThen(Random(2) = 0, aaa, bbb);
Hier siehst du aaa, bbb und dann noch a oder b.
Das Neue würde nur aaa und a ODER bbb und b anzeigen.
Ein Therapeut entspricht 1024 Gigapeut.