![]() |
Delphi-Version: 10.3 Rio
Funktionsname im COde nutzen
Gibt es eine Möglichkeit, in einer function/procedure den Namen der function/procedure im Code zu nutzen?
Folgendes Beispiel:
Delphi-Quellcode:
Anzeigen soll die Funktion dann: "Die Funktion heißt: MachWas"
function MachWas( input: string): integer;
begin ShowMessage( 'Die Funktion heißt: '+ function_name); end; Gibt es sowas? Grund: Ich habe bei ganz ganz vielen Funktionen für den Fehlerfall Results, die die Location mitliefern. Z.B. 'Unitname.Class.Methodenname' Klar. Ich kann das als String 'MachWas' reinschreiben. Ab für ein vielfaches Cut'n Copy wäre soetwas nicht schlecht. ;-) VG Thomas |
AW: Funktionsname im COde nutzen
|
AW: Funktionsname im COde nutzen
Mit Assert, würde ich aber nicht empfehlen (sondern abraten).
![]() |
AW: Funktionsname im COde nutzen
Kurz und knackig: Es geht allgemein betrachtet nicht. Du kannst über die Debug-Info beispielsweise so etwas machen, nur ist die in der Release-Konfiguration beispielsweise nicht verfügbar.
|
AW: Funktionsname im COde nutzen
Zitat:
Niemand verbietet dir in dieser Config die MAP-Datei, die externen Debuginfos und/oder Delphi-Debuginfos zu aktivieren. Es gibt auch einige MAP zu DBG Converter, womit dann auch die Debug-API von Windows zurecht kommt. ![]() Es wäre natürlich viel zu einfach, wenn Delphi auch die Internen Debug Infos erzeugen würde, so wie jeder andere normale Windows PE-erzeugende Compiler. |
AW: Funktionsname im COde nutzen
Gibt es nicht seit einer der neuern Delphi-Versionen sowas wie TClass.ImplementationUnit und ähnliche Funktionen? Mein Gedächtnis lässt mich da gerade im Stich, aber irgendwas in der Richtung war da.
|
AW: Funktionsname im COde nutzen
|
AW: Funktionsname im COde nutzen
Zitat:
Hilft aber bei der Frage des OP leider auch nicht weiter. Ich hatte in Erinnerung, dass es noch weitere solcher Funktionen gab, aber das scheint nicht so zu sein. |
AW: Funktionsname im COde nutzen
"neuere" ... seit bestimmt schon mindestens über einem dutzend Jahren findet man die Unit und das Modul (EXE/DLL/BPL) in der Typinfo, also von dort wo es deklariert wurde.
Aber Infos der Implementation (Aufrufer/Ersteller und die Position) gibt es nicht. In uralten Delphis vor D7 war es noch bedingt möglich sich ins PreCompile reinzuhängen und sowas wie eine Makro-Funktion nachrüsten, aber das war einmal. Jemand hier aus dem Forum hatte da mal das __FILE__, __LINE__, und __FUNCTION__ vom PHP nachgebaut. ![]() Einzige Möglichkeit Weg von Delphi und wechseln zum C++Builder, aber da gibt es bestimmt besserere C++-Compiler. ![]() |
AW: Funktionsname im COde nutzen
:-)
Da habe ich ja eine interessante Diskussion losgetreten. Ich werde für mich jetzt die Namen einfach reinschreiben. Sooo wichtig/dringend ist es für mich nicht. Habe einfach in meinem ErrorMessage-System eine "Location"-String Variable drin, die mir die Position mitteilt. Ist bei einem größeren System mit Error-Klassen sehr hilfreich. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 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