AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ist im Prozedurzeiger eine Klasse drin?

Ein Thema von himitsu · begonnen am 4. Feb 2011 · letzter Beitrag vom 4. Feb 2011
 
Benutzerbild von guinnes
guinnes

Registriert seit: 28. Feb 2007
Ort: Bottrop
265 Beiträge
 
Delphi 5 Enterprise
 
#9

AW: Ist im Prozedurzeiger eine Klasse drin?

  Alt 4. Feb 2011, 13:51
Das geht aber nur, da der Speicher der Application-Instanz zufällig hinter dem Programmcode und der Speicher für die zu testende Instanz zufällig hinter der Application.Instanz im "RAM" liegt ... davor ist aber auch noch genug Platz.
Da das Application-Object ja relativ früh in einem noch recht unfragmentierten Speicher angelegt wird, ist die Wahrscheinlichkeit recht hoch, dass es ziemlich am Anfang des Heaps liegt. Aber im Prinzip hast du recht
Um dem aus dem Weg zu gehen, kann man die Adresse der globalen Variablen Application benutzen : Die liegt unterhalb des Heap aber garantiert höher als die VMT's :
Delphi-Quellcode:
procedure Check(Proc: TProc);
begin
  if Integer(TMethod(Proc).Data) < Integer(@Application) then
    ShowMessage('Class Proc')
  else
    ShowMessage('Object');
end;
Glückauf

Geändert von guinnes ( 4. Feb 2011 um 19:13 Uhr) Grund: Rächtschraibfähler besaitigt
  Mit Zitat antworten Zitat
 


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 19:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz