System.Assigned
Delphi
function Assigned(var P): Boolean;
Inhaltsverzeichnis
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
function | public | System.pas | System | System |
Beschreibung
Überprüft einen Zeiger oder eine prozedurale Variable auf nil (nicht zugewiesen).
Mit Assigned können Sie prüfen, ob der in P übergebene Zeiger bzw. die Prozedur nil ist. P muss eine Variablenreferenz eines Zeigers oder prozeduralen Typs sein.
Assigned(P) entspricht bei einer Zeigervariable dem Test P <> nil und bei einer Prozedurvariable dem Test @P <> nil.
Assigned gibt False zurück, wenn P
nil ist, ansonsten True.
Tipp: Beim Zuweisungstest von Objektereignissen und -prozeduren können Sie nicht auf nil testen. Dazu müssen Sie Assigned verwenden.
var
LNotifyEvent: TNotifyEvent;
begin
if LNotifyEvent <> nil then { This is not OK and generates compiler error. }
Writeln('something');
if Assigned(LNotifyEvent) then { This is OK. }
Writeln('something');
end;
Tipp: In bestimmten Fällen besteht ein Unterschied zwischen Assigned(Something) und Something <> nil. Zum Beispiel testet der folgende Code Assigned(LMyFunction), ob die Variable
LMyFunction
tatsächlich zugewiesen ist. LMyFunction<> nil testet dagegen den Ergebniswert von LMyFunction auf Zuweisung.
function MyFunction: Pointer;
begin
Result := nil;
end;
type
TMyFunction = function: Pointer;
var
LMyFunction: TMyFunction = MyFunction;
begin
Writeln('Statement "LMyFunction <> nil" evaluates to: ', LMyFunction <> nil);
Writeln('Statement "Assigned(LMyFunction)" evaluates to: ', Assigned(LMyFunction));
end.
Ausgabe:
Statement "LMyFunction <> nil" evaluates to: FALSE Statement "Assigned(LMyFunction)" evaluates to: TRUE
Hinweis:Assigned kann keine hängenden Zeiger erkennen – d.h. Zeiger, die auf keine gültigen Daten mehr verweisen, aber dennoch nicht nil sind. In dem Codebeispiel für Assigned (SystemAssigned) wird von Assigned nicht erkannt, dass P nicht gültig ist.