AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Ist das ein Pattern?

Ein Thema von Jumpy · begonnen am 28. Mär 2012 · letzter Beitrag vom 28. Mär 2012
Antwort Antwort
Seite 3 von 3     123
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
3.921 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#21

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 20:13
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.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
40.504 Beiträge
 
Delphi 11 Alexandria
 
#22

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 20:46
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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
3.921 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#23

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 21:03
Ich fass nochmal zusammen:

Zitat von Delphi Dokumentation:
Der Aufruf Assigned(P) entspricht bei einer Zeigervariablen dem Test P <> nil und bei einer Prozedurvariablen dem Test @P <> nil.
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
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (28. Mär 2012 um 21:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
40.504 Beiträge
 
Delphi 11 Alexandria
 
#24

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 23:31
Hab grade was Neues gelernt.

Delphi-Quellcode:
  X := nil;
  if @@X <> nil then
    Beep;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf