Autor Beitrag
Milhouse2500
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33

Win 2000, Win XP
D5 Prof, D7 Enterprise
BeitragVerfasst: Fr 06.02.04 17:05 
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
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33

Win 2000, Win XP
D5 Prof, D7 Enterprise
BeitragVerfasst: Fr 06.02.04 17:21 
Ne so nicht.

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

so von wegen

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 06.02.04 18:46 
mal ne idee in Pseudo-Code
ausblenden 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.

_________________
We are, we were and will not be.
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Fr 06.02.04 18:54 
Hallo,

schau dir mal MadExcept an. Das bietet das, was du dir wünscht.

Gruß
Ken

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
Milhouse2500 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33

Win 2000, Win XP
D5 Prof, D7 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 351

WinXP,Linux
D7 Prof, XE7
BeitragVerfasst: 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:

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


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

ausblenden 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 www.delphi-jedi.org/.

Gruß
KidPaddle
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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...

_________________
We are, we were and will not be.