Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Unterschied von nil und assigned (https://www.delphipraxis.net/173987-unterschied-von-nil-und-assigned.html)

ATS3788 27. Mär 2013 09:34

Unterschied von nil und assigned
 
Hallo

Ich frage mich was der
Zitat:

Unterschied von nil und assigned
ist, also

Delphi-Quellcode:
if frxDBDatasetHeader <> nil then
;

oder

Delphi-Quellcode:
if assigned(frxDBDatasetHeader) then

DeddyH 27. Mär 2013 09:38

AW: Unterschied von nil und assigned
 
http://docwiki.embarcadero.com/Libra...ystem.Assigned
Zitat:

Ü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.

ATS3788 27. Mär 2013 14:49

AW: Unterschied von nil und assigned
 
Danke DaddyH

Ganz begriffen habe ich es noch nicht
Habe mir mal den Link ausgedruckt
und werde es langsam verdauen,
in der Hoffnung das es Click macht.

Sir Rufo 27. Mär 2013 18:03

AW: Unterschied von nil und assigned
 
Zitat:

Zitat von ATS3788 (Beitrag 1209119)
Danke DaddyH

Ganz begriffen habe ich es noch nicht
Habe mir mal den Link ausgedruckt
und werde es langsam verdauen,
in der Hoffnung das es Click macht.

Eigentlich ist es ganz einfach ;)

Stell dir vor du hast folgendes definiert
Delphi-Quellcode:
type
  TMyFunction = function : Boolean;

function GetSomethingWrong( AFunction : TMyFunction ) : Boolean;
begin
  if AFunction <> nil then
    Result := AFunction
  else
    Result := False;
end;

function GetSomethingRight( AFunction : TMyFnction ) : Boolean;
begin
  if Assigned ( AFunction ) then
    Result := AFunction
  else
    Result := False;
Bei
Delphi-Quellcode:
GetSomethingWrong
gibt es jetzt einen Compiler-Fehler, da versucht wird die Funktion auszuführen und den Funktionswert (Boolean) mit nil zu vergleichen ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz