Entwickler-Ecke

Sonstiges (Delphi) - Wie? Namen der procedure/function in Fehlermeldung


Milhouse2500 - Fr 06.02.04 17:05
Titel: Wie? Namen der procedure/function in Fehlermeldung
Hi

wollte mal fragen ob irgendjemand ahnung hat wie ich den Namen der procedure/function in der ich gerade bin??

z.B. Im Fehlerfall bei einer exception?

Wäre super wenn das jemand wüsste.

So long
Milhouse


Delete - Fr 06.02.04 17:09

Kuck dir in der Hilfe mal Assert an. Liefert es False zurück bekommst du eine Fehlermeldung mit der Zeilennumer, wo der Aufruf fehlgeschlagen ist.


Milhouse2500 - Fr 06.02.04 17:21

Ne so nicht.

Ich würd das ja dann gerne in eine Log datei schreiben.

so von wegen


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
try
...

except on e:Exception do begin
  log('fehler in methode: '+functionname);
end;


ok?

Aber danke


Gausi - Fr 06.02.04 18:46

mal ne idee in Pseudo-Code

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
Procedure MeineTolleProcedur
begin
  try
  [...]
  except
     öffne Log-Datei;
     füge "Fehler in Methode MeineTolleProzedur" in Datei ein
     schliesse Log-Datei
end;

Procedure MeineGanzTolleProcedur
begin
  try
  [...]
  except
     öffne Log-Datei;
     füge "Fehler in Methode MeineGanzTolleProzedur" in Datei ein
     schliesse Log-Datei
end;

Wie man TextDateien öffnet, schliesst und bearbeitet, solltest du hier im Forum finden.


CenBells - Fr 06.02.04 18:54

Hallo,

schau dir mal MadExcept [http://www.madexcept.com] an. Das bietet das, was du dir wünscht.

Gruß
Ken


Milhouse2500 - Fr 06.02.04 19:21

Danke für die antworten.

@Gausi
so wäre das ja kein problem, was ich aber gerne möchte, ist das ich den text nicht selber hinschreiben möchte sondern das Delphi von alleine herausfindet in welcher proceudre er gerade steckt.

@CenBells
Ich habe mir das MadExcept nicht weiter angeschaut da es nicht für kommerzielle zwecke(ausser man bezahlt was) nutzen kann. Ich es aber in software einbinden will die verkauft wird.

Hätte jetzt nicht gedacht das es keine richtige möglickeit gibt an den verd... namen von der proc/func zu kommen.

So long
Milhouse


KidPaddle - Fr 06.02.04 19:57

Die JCL enthält Funktionen bereit, mit der man Quellcode, Zeilennummer und Procedure ermitteln kann.

Das geht aber nur, wenn die JCL - Debuginformation mit eingebunden sind. Dazu must Du die Experten installieren und einmal den Menüpunkt Analyze Project im Projekt - Menü aufrufen. Danach kannst Du mit:


Delphi-Quelltext
1:
function ProcByLevel(const Level: Integer = 0): string;                    


Damit bekommst du die Funktion, in der der Fehler aufgetreten ist.


Delphi-Quelltext
1:
2:
function ModuleByLevel(const Level: Integer = 0): string;
function LineByLevel(const Level: Integer = 0): Integer;


Klar was diese Funktionen bringen, oder? :wink:

Zu finden auf http://www.delphi-jedi.org/.

Gruß
KidPaddle


Gausi - Fr 06.02.04 21:23

Also ich plädiere weiterhin für meine Methode. Am besten eine Prozedur "LogTo" schreiben, der man den Dateinamen für die Log-Datei übergibt und einen weiteren String mit der entsprechenden Fehlermeldung, oder nur den Namen der Prozedur, von der aus sie aufgerufen wird. Das ist einfach, wenig Aufwand, benötigt keine weiteren Komponenten und man kann es immer wieder benutzen. Was also spricht dagegen?
Gut, man muss den Namen der Prozedur während des Codens per Hand rausfinden (such mal bei gugel danach, wie man das macht :-D), und wenn man den Namen der Prozedur ändert, muss man auch den Funktionsaufruf ändern, aber sonst...