![]() |
Name der aufrufenden procedure/function ermitteln
Hallo Delphi-Communitiy,
wie kann man den Namen einer aufrufenden procedure ermitteln? Beispielcode:
Delphi-Quellcode:
dabei soll INNERHALB der procedure XYZ ermittelt werden ob sie von "ABC" oder "UVW" procedure ABC; begin XYZ; end; procedure UVW; begin XYZ; end; procedure XYZ; begin ... end; aufgerufen wurde. Bin Dankbar für jeden Hinweis wenn es nicht in dieser allgemeinen Form geht, dann vielleicht wenigstens wenn die procedure zu einer Klasse gehören oder kann man durch Übergabe von Sender: TObject oder VonKomp : TComponent also mit procedure XYZ(VonKomp : TObject); oder so ähnlich sowas realisieren? Bin dankbar für jeden Hinweis viele Grüße Stefan |
Re: Name der aufrufenden procedure/function ermitteln
jup, ich würds mit parameter machen...
als string, als TObject, oder als pointer auf die Prozedur... |
Re: Name der aufrufenden procedure/function ermitteln
Hallo Skiron,
vielen Dank für Deine Antwort. Jetzt habe ich vergessen oben zu posten, dass ich gerne eine Beispielcode dazu hätte. Klar ich kann einen Zeichenkette Parameter übergeben. Aber dann muss ICH mir bei jedem Aufruf die Arbeit machen die Zeichenkette einzugeben. Das ist jedoch genau das was ich vermeiden will. Ich hätte gerne eine Möglichkeit das der Aufruf IMMER gleich aussieht. OHNE extra-Parameter Delphi bietet so viele Möglichkeiten den Code zu beeinflussen bzw. Details abzufragen. Da gibt es doch bestimmt auch was mit dem man die aufrufende procedure aus dem schon vorhandenem ermitteln kann. In C habe ich dazu etwas von "Stack-Tracing" gelesen. Vielleicht muss man ja nur "WISSEN" wie man Sender.ClassInfo Sender.MethodName oder was weiß ich tricky miteinander in einer function GetCallingName verknüpft um zu erreichen dass
Delphi-Quellcode:
procedure ABC;
begin blabla; XYZ; end; procedure XYZ; var CalledFrom : string; begin CalledFrom := GetCallingName; end; das GetCallingName "ABC" zurückgibt vielen Dank schon im Voraus für Code-Vorschläge viele herzliche Grüße Stefan |
Re: Name der aufrufenden procedure/function ermitteln
wenn dus ohne machen möchtest, könntest du echt den Stack auslesen
das könntest du mit assembler machen und mit push und pop irgendwie arbeiten da kenn ich mich aber nicht so gut aus, sry... |
Re: Name der aufrufenden procedure/function ermitteln
In einem normalen Delphi-Programm sind die noetigen Informationen nicht enthalten.
Es wird zumindest das MAP-File mit den Namen der Methoden und Funktionen benoetigt. In diesem Fall wuerde ich dir aber zu einem Parameter raten. Also ABC gibt seinen Namen einfach an XYZ weiter. Die Alternative waere z. B. die Jedi Code Library ![]() darin enthaltene Debug Extension. Dort wird das MAP File beim Kompilieren erzeugt, komprimiert und an das EXE angehaengt. |
Re: Name der aufrufenden procedure/function ermitteln
Zitat:
Code:
der von den aufrufenden Prozeduren gefüllt wird.
iCallerGroupID: string
Prozedurenamen sollte vom Compiler nicht mit in den Code übernommen werden. Bestenfalls könnte man ihn aus Debug-Informationen ermitteln (die bei der Auslieferung dann nicht mehr mit eingebunden sind). Allerdings würde ich das nicht machen. Gruß, Marvin. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 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