![]() |
Zur Laufzeit, Zeilennummer feststellen
Hallo zusammen,
gibt es die Möglichkeit zur Laufzeit die Zeilennummer im Code auszugeben. Beispiel: 101 102 103 ShowMessage( {Zeilennummer} ); 104 Fenster: 103 Gruß Eppos |
AW: Zur Laufzeit, Zeilennummer feststellen
Ohne großen Aufwand kenne ich nichts außer
![]()
Delphi-Quellcode:
procedure p(const Message, Filename: string; LineNumber: Integer; ErrorAddr: Pointer);
begin ShowMessage( LineNumber.ToString() ); end; procedure TForm19.Button1Click(Sender: TObject); begin System.AssertErrorProc := p; assert(false, 'message'); end; Kannst du ein praktisches Beispiel geben wofür du das brauchst? Geht sicher besser. |
AW: Zur Laufzeit, Zeilennummer feststellen
Ich würde gerne ausgeben, an welcher Stelle ein Fehler auftritt.
|
AW: Zur Laufzeit, Zeilennummer feststellen
|
AW: Zur Laufzeit, Zeilennummer feststellen
Das deckt leider nicht mein internes Fehlerhandling ab. 8-)
|
AW: Zur Laufzeit, Zeilennummer feststellen
Fehler Behandlungs Beispiel:
Delphi-Quellcode:
var
number1, number0 : Integer; begin try number0 := 0; number1 := 1; number1 := number1 div number0; ShowMessage('1 / 0 = '+IntToStr(number1)); except on E : Exception do begin ShowMessage('Exception ClassName = '+E.ClassName); // hier gibt's den ClassName des Verursachers ShowMessage('Exception Nachricht = '+E.Message); // und seine Fehlermeldung end; end; end; Man kann auch auf verschieden Fehler in On Events reagieren, Beispiel:
Delphi-Quellcode:
Für Zeilennummern solltest Du Dich mit
except
On E : EInOutError do ShowMessage('IO Fehler : '+E.Message); On E : EDivByZero do ShowMessage('Division durch NULL : '+E.Message); else ShowMessage('andere Fehler'); end;
Delphi-Quellcode:
und
on e: exception do begin showmessage(e.StackTrace); end;
![]() edit ![]() ![]() |
AW: Zur Laufzeit, Zeilennummer feststellen
Könntest Du Dich etwas ausführlicher äußern?
Eine Exception zeigt im allg. auch die Position im Compilat an, an der es knallt. Mit Hilfe des Debuggers kommt man dann zu der fehlerhaften Sourcecodestelle. Gruß K-H |
AW: Zur Laufzeit, Zeilennummer feststellen
Zitat:
|
AW: Zur Laufzeit, Zeilennummer feststellen
Danke für die Vielzahl von Antworten.
Wir haben ein eigenes Fehlerhandling programmiert. Die Vorgabe war, keine externen Hilfsmittel zuzulassen (madExcept). Fehler zu melden, die nicht systemseitig erzeugt werden, sondern durch andere Fälle entstehen werden bei uns gesammelt und ausgewertet. |
AW: Zur Laufzeit, Zeilennummer feststellen
Im Compilat gibt es keine Zeilennummern mehr.
Bei Assert wird vom Compiler an der Stelle die Zeilennummer einkompilert, aber sowas wie _FILE_ und _LINE_ ala PHP oder anderer Scriptsprachen gibt es leider nicht. Alle anderen Varianten nehmen die Debuginfos, bzw. die MAP-Datei, welche der Compiler/Linker erstellen kann, und lesen/suchen daraus die naheliegenste Zeile zur entsprechenden Codeposition. Wenn keine Fremdkomponenten genommen werden sollen, damm müsst ihr eben das alles selber machen. Eurekalog und vermutlich auch madExcept nehmen die MAP-Datei, holen sich diese Infos da raus und hängen sie in einem eigenen Format als Ressource an das Compilat an. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:34 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 by Thomas Breitkreuz