Verstehe ich hier etwas falsch und IfThen
soll nicht den ternären Operator simulieren? Wenn ich richtig liege, würde nämlich nur Assigned(Analyse.Method)
ausgewertet - was ja vollkommen legitim ist - und dann abhängig vom Ergebnis das erste- oder zweite Argument zurückgegeben.
Leider nicht, es werden alle Funktion für die drei Argumente ausgeführt. Kann man auch schnell hinterherdebuggen:
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
System.Math;
var
Res: Integer;
function GiveDecision: Boolean;
begin
Writeln('
GiveDecision');
Result := Boolean(RandomRange(0, 1));
end;
function GiveFive: Integer;
begin
Writeln('
GiveFive');
Result := 5;
end;
function GiveFour: Integer;
begin
Writeln('
GiveFour');
Result := 4;
end;
begin
try
Res := IfThen(GiveDecision, GiveFive, GiveFour);
Writeln('
Res: ' + Res.ToString);
Readln;
except
on E:
Exception do
Writeln(E.ClassName, '
: ', E.
Message);
end;
end.