Bei
IfThen
gilt auch zu beachten, dass es sich hier um einen Funktionsaufruf handelt, bei dem immer alle Parameter ausgewertet werden.
Delphi-Quellcode:
var
cmp: TComponent;
cmpName: string;
begin
cmp := FindComponent('Edit1');
{ hier kann ein Zugriffsfehler auftreten }
cmpName := IfThen(cmp <> nil, cmp.Name, '');
{ kann hier nicht passieren }
if cmp <> nil then
cmpName := cmp.Name
else
cmpName := '';
Stimmt, aber in so 'ner Situation käme ich nie und nimmer auf die Idee IfThen zu nutzen. Bei Parametern für IfThen weiß ich immer vorher, dass ich das problemlos drauf zugreifen kann.
Delphi-Quellcode:
var
cmp: TComponent;
cmpName: string;
begin
cmp := FindComponent('Edit1');
if Assigned(cmp) then begin // ohne das, geht es bei mir nach 'nem FindComponent o. ä. garantiert nicht weiter.
...
end else begin
...
end;