System.Assigned

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

function Assigned(var P): Boolean;

Propriétés

Type Visibilité  Source Unité  Parent
function public System.pas System System

Description

Teste un pointeur nil (non assigné) ou une variable procédurale.

Utilisez Assigned pour déterminer si le pointeur ou la procédure référencé par P a la valeur nil. P doit être une référence variable d'un pointeur ou d'un type procédural.

Assigned(P) correspond au test P <> nil dans le cas d'une variable pointeur et à @P <> nil dans le cas d'une variable procédurale.

Assigned renvoie False si la valeur nil est attribuée à P, et True dans le cas contraire.

Conseil : Lors du test de l'assignation des procédures et des événements d'objets, vous ne pouvez pas tester nil, et l'utilisation de Assigned est la meilleure façon de procéder.

 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;

Conseil : Dans certains cas, il existe une différence entre l'utilisation de Assigned(Something) et Something <> nil. Par exemple, dans le code suivant Assigned(LMyFunction) vérifie si la variable LMyFunction est réellement assignée, alors que LMyFunction<> nil teste l'assignation de la valeur de résultat de LMyFunction.

 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.

Sortie :

 Statement "LMyFunction <> nil" evaluates to: FALSE
 Statement "Assigned(LMyFunction)" evaluates to: TRUE

Remarque : Assigned ne peut pas détecter un pointeur devenu incorrect, autrement dit différent de nil et ne pointant plus sur des données valides. Par exemple, dans l'exemple de code relatif à Assigned (SystemAssigned), Assigned ne détecte pas que P n'est pas valide.

Voir aussi

Exemples de code