Forum: Object-Pascal / Delphi-Language
Delphi
by darktrym,
9. Sep 2021
function IfThen(pCondition: Boolean; const pBranchTrue, pBranchFalse: String): String;
begin
if pCondition then
Result:= pBranchTrue
else
Result:= pBranchFalse;
end;
Hat diese Implementation dieses Problem auch?
Forum: Object-Pascal / Delphi-Language
Delphi
by darktrym,
9. Sep 2021
Die Dereferenzierung wird zur Laufzeit gemacht, daher ist die Auswertung aller Zweige zur Laufzeit nicht notwendig.
Der ternäre Operator in C-artigen Sprachen macht das meines Wissens auch nicht.
Üblicherweise verwendet ich das in Logs als Logger.Log(Format('barcode:%s', IfThen(Assigned(entry), entry^.bc, ''))) aber das erzeugt Zugriffsverletzungen weil der Compiler das nicht prüft aber...
Forum: Object-Pascal / Delphi-Language
Delphi
by darktrym,
9. Sep 2021
Hallo,
ich frage mal nach weil ich nix dazu in der Hilfe finden kann, ist das Verhalten von IfThen auch in höheren kaputt?
Ich meine damit wenn die Argumente 2 oder 3 eine Dereferenzierung eines Objekts verwenden und Argument 1 prüft ob das möglich ist.
Delphi führt dann auch den Zweig aus, der nicht wahr ist was zu einer Zugriffsverletzung führt.