![]() |
Name meiner Funktion ermitteln
kann man über RTTI den Namen einer Funktion ermitteln ?
Delphi-Quellcode:
function TEST_1 : boolean
var MyFuncname : String ; begin MyFuncname := getFunctionname_here; // sollte jetzt TEST_1 zurückgeben end; function TEST_2 : boolean; var MyFuncname : String ; begin MyFuncname := getFunctionname_here; // sollte jetzt TEST_2 zurückgeben end; end; |
AW: Name meiner Funktion ermitteln
Nein.
einfache Prozeduren/Funktionen haben keinen Namen, in der RTTI. Das ist nur bei "einigen" Methoden von Klassen, Records und Interfaces. Falls mit Debuginfos kompilert, könntest du dort suchen. |
AW: Name meiner Funktion ermitteln
müsste ich dann überall Attribute vergeben, kann ich damit den Namen der Funktion herausfinden welche gerade ausgeführt wird ?
|
AW: Name meiner Funktion ermitteln
Ich bin mir jetzt nicht sicher, ob für normale Funktionen die Attribute möglich sind.
Aber ich denke mal nicht, weil Funktionen nicht in der RTTI landen. (bin mir fast sicher, dass TRttiContext nirgendwo Funktionen auflistet und somit kannst du auch dafür nichts auslesen, wie z.B. Attribute) Der Compiler gibt ja "leider" keine Fehlermeldung Warnung aus, wenn er auf unbekannte Attribute trifft, oder wenn er ein Attribut ignoriert, weil es dort nicht unterstützt wird. > Als Class-Function in einer abstrakten Klasse verpacken |
AW: Name meiner Funktion ermitteln
Das ist doch eine Fortführung von deinem
![]() oder? Du willst das Richtige :thumb:, aber der Weg ist der falsche :warn: Du willst dir nicht antun bei jeder Methode irgendwo völlig redundant nochmal einen String zu parken. Spätestens nach dem ersten Umbenennen einer Methode passt da nichts mehr, da hilft dir in Delphi auch kein Tool. Weiterhin in jede Methode ein try..except mit ständig dem gleichen ![]() Du willst protokollieren wenn etwas fehlschlägt, für gewöhnlich via Exceptions, richtig? Wäre es statt dem blanken Methodennamen nicht viel besser wenn du gleich den gesamten Callstack protokollieren könntest, wie du es auch im Debugger siehst wenn die IDE wegen einer Exception anhält? Eine kostenlose Lösung über die Jedi JCL hierfür zeigt der nette Mann hier aus dem Forum: ![]() Das verwenden wir auch in all unserer Software, es funktioniert prächtig. Kein Herumprobieren, man sieht direkt in welcher Zeile(!) es beim Kunden vor Ort knallt. Du brauchst vielleicht das erste mal ein paar Minuten um es zu verstehen, aber das lohnt sich! Falls du den Namen der aktuellen Methode für etwas völlig anderes brauchst ignorier mich. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 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