Funktionsnamen in Meldung übernehmen

Für Fragen rund um die Ide und zum Debugger
Antworten
am2
Lazarusforum e. V.
Beiträge: 116
Registriert: Di 21. Dez 2010, 09:59
OS, Lazarus, FPC: Win (L 0.9.26 beta FPC 2.2.2)
CPU-Target: 32 Bit

Funktionsnamen in Meldung übernehmen

Beitrag von am2 »

Hi,

mir fällt kein besserer Titel ein. Im Moment programmiere ich nur noch gelegentlich, daher stelle ich seltsame Fragen :)
Ich erinnere mich daran, dass es das unter C++ und meiner Erinnerung nach auch unter Delphi gab.

Code: Alles auswählen

procedure TFormBlaBla.XYZ(...);
begin
  if IrgendwasGanzSchrecklichesIstPassiert() then
    self.Caption = "Fehler in Funktion " + %%NameDerFunktion%%;
end;


gesucht ist so eine Art Editor- Makro (%%NameDerFunktion%%), das den Compiler/Linker dazu veranlasst, den Namen "TFormBlaBla.XYZ" an die entsprechende Stelle zu schreiben.
Gern gesehen auch alle anderen "Makros" dieser Art (Zeilennummern, Modulnamen, Klassennamen ...)

Kann mir jemand helfen?

Vielen Dank.

am2

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Funktionsnamen in Meldung übernehmen

Beitrag von Michl »

Unter aktuellem FreePascal (3.0.2) könntest du dir ein eigenes Makro definieren, das du jeweils setzt, so wie das z.B. mit <w> im Editor eingeben und <Ctrl> + <J> möglich ist.

Mit FPC Trunk (3.1.1) geht sowas;

Code: Alles auswählen

procedure TFormBlaBla.XYZ(...);
begin
  if IrgendwasGanzSchrecklichesIstPassiert() then
    self.Caption = "Fehler in Funktion " + {$I %CURRENTROUTINE%};
end;

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

am2
Lazarusforum e. V.
Beiträge: 116
Registriert: Di 21. Dez 2010, 09:59
OS, Lazarus, FPC: Win (L 0.9.26 beta FPC 2.2.2)
CPU-Target: 32 Bit

Re: Funktionsnamen in Meldung übernehmen

Beitrag von am2 »

Vielen Dank für Deine Antwort.

Michl hat geschrieben:Unter aktuellem FreePascal (3.0.2) könntest du dir ein eigenes Makro definieren, das du jeweils setzt, so wie das z.B. mit <w> im Editor eingeben und <Ctrl> + <J> möglich ist.

Sobald ich aber den Namen der Funktion ändere, ist das nicht mehr aktuell.

Michl hat geschrieben:Mit FPC Trunk (3.1.1) geht sowas;

Code: Alles auswählen

procedure TFormBlaBla.XYZ(...);
begin
  if IrgendwasGanzSchrecklichesIstPassiert() then
    self.Caption = "Fehler in Funktion " + {$I %CURRENTROUTINE%};
end;

Das klingt schon mal interessant. Ich hab noch die 1.6.2 mit 3.0.0. Also benötige ich nur noch etwas Geduld.

Antworten