AGB  ·  Datenschutz  ·  Impressum  







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

Name meiner Funktion ermitteln

Ein Thema von bernhard_LA · begonnen am 21. Feb 2018 · letzter Beitrag vom 21. Feb 2018
Antwort Antwort
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#1

Name meiner Funktion ermitteln

  Alt 21. Feb 2018, 16:01
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;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#2

AW: Name meiner Funktion ermitteln

  Alt 21. Feb 2018, 16:10
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Name meiner Funktion ermitteln

  Alt 21. Feb 2018, 16:29
müsste ich dann überall Attribute vergeben, kann ich damit den Namen der Funktion herausfinden welche gerade ausgeführt wird ?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#4

AW: Name meiner Funktion ermitteln

  Alt 21. Feb 2018, 16:40
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Name meiner Funktion ermitteln

  Alt 21. Feb 2018, 17:09
Das ist doch eine Fortführung von deinem
http://www.delphipraxis.net/195342-g...ml#post1394315
oder?

Du willst das Richtige , aber der Weg ist der falsche

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 Boilerplate-Code ist sicher auch nicht das richtige.

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:
https://blog.dummzeuch.de/2014/03/08/using-jcldebug/

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.
  Mit Zitat antworten Zitat
Antwort Antwort


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