Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Ist das ein Pattern? (https://www.delphipraxis.net/167398-ist-das-ein-pattern.html)

Stevie 28. Mär 2012 19:13

AW: Ist das ein Pattern?
 
Zitat:

Zitat von himitsu (Beitrag 1159126)
Diese bestehen intern aus 2 Zeigern, also ist ein direktes Prüfen auf nil nicht möglich.

Falsch, lies mal, was ich oben ausm docwiki zitiert habe.

Assigned überprüft nicht, ob irgendwelcher Müll in dem Methodenzeiger steht, sondern nur ob er ungleich nil ist.

himitsu 28. Mär 2012 19:46

AW: Ist das ein Pattern?
 
Zitat:

Zitat von Stevie (Beitrag 1159134)
Assigned überprüft nicht, ob irgendwelcher Müll in dem Methodenzeiger steht, sondern nur ob er ungleich nil ist.

Hab ich was Anderes behauptet?

Delphi-Quellcode:
var
  X: TNotifyEvent;

if Assigned(X) then
  Beep;

if (TMethod(X).Code <> nil) or (TMethod(X).Data <> nil) then
  Beep;

Stevie 28. Mär 2012 20:03

AW: Ist das ein Pattern?
 
Ich fass nochmal zusammen:

Zitat:

Zitat von Delphi Dokumentation
Der Aufruf Assigned(P) entspricht bei einer Zeigervariablen dem Test P <> nil und bei einer Prozedurvariablen dem Test @P <> nil.

Zitat:

Zitat von himitsu (Beitrag 1159126)
Wofür Assigned einen Vorteil bietet.
> Methodenzeiger

Diese bestehen intern aus 2 Zeigern, also ist ein direktes Prüfen auf nil nicht möglich.
Und wöllte man die internen Zeiger prüfen, dann müßte man sich den Methodenzeiger erstmal in einen lesbaren Typen casten, welcher Zugriff auf die beiden Felder bietet.
> Datenzeiger (Objektinstanz) und Codezeiger (Zeiger auf die Methode/Prozedur)


Delphi-Quellcode:
if @x <> nil then
  Beep

himitsu 28. Mär 2012 22:31

AW: Ist das ein Pattern?
 
Hab grade was Neues gelernt. :shock:

Delphi-Quellcode:
  X := nil;
  if @@X <> nil then
    Beep;


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:04 Uhr.
Seite 3 von 3     123   

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