System.Assigned

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

function Assigned(var P): Boolean;

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.

Siehe auch

Codebeispiele