AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Zur Laufzeit, Zeilennummer feststellen

Zur Laufzeit, Zeilennummer feststellen

Ein Thema von Eppos · begonnen am 13. Apr 2018 · letzter Beitrag vom 18. Apr 2018
Antwort Antwort
Seite 1 von 4  1 23     Letzte » 
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
478 Beiträge
 
Delphi XE5 Ultimate
 
#1

Zur Laufzeit, Zeilennummer feststellen

  Alt 13. Apr 2018, 18:04
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
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Zur Laufzeit, Zeilennummer feststellen

  Alt 13. Apr 2018, 20:17
Ohne großen Aufwand kenne ich nichts außer Assert(..)

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

Registriert seit: 7. Aug 2006
Ort: Heilbronn
478 Beiträge
 
Delphi XE5 Ultimate
 
#3

AW: Zur Laufzeit, Zeilennummer feststellen

  Alt 16. Apr 2018, 09:35
Ich würde gerne ausgeben, an welcher Stelle ein Fehler auftritt.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
3.963 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

AW: Zur Laufzeit, Zeilennummer feststellen

  Alt 16. Apr 2018, 09:43
Moin...
http://www.madshi.net/

http://help.madshi.net/madExceptDemo.htm
  Mit Zitat antworten Zitat
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
478 Beiträge
 
Delphi XE5 Ultimate
 
#5

AW: Zur Laufzeit, Zeilennummer feststellen

  Alt 16. Apr 2018, 09:57
Das deckt leider nicht mein internes Fehlerhandling ab.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
2.263 Beiträge
 
Delphi 2010 Professional
 
#6

AW: Zur Laufzeit, Zeilennummer feststellen

  Alt 16. Apr 2018, 10:13
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:
  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;
Für Zeilennummern solltest Du Dich mit on e: exception do begin showmessage(e.StackTrace); end; und GetStackInfoStringProc beschäftigen.


edit
Link1 und Link2 wo ich diese Informationen her habe.
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...

Geändert von KodeZwerg (16. Apr 2018 um 10:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.134 Beiträge
 
Delphi 7 Personal
 
#7

AW: Zur Laufzeit, Zeilennummer feststellen

  Alt 16. Apr 2018, 10:48
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
3.963 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

AW: Zur Laufzeit, Zeilennummer feststellen

  Alt 16. Apr 2018, 11:31
Zitat:
Das deckt leider nicht mein internes Fehlerhandling ab.
... verstehe ich nicht. Was hat der madExcept nicht?

Geändert von haentschman (16. Apr 2018 um 11:53 Uhr)
  Mit Zitat antworten Zitat
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
478 Beiträge
 
Delphi XE5 Ultimate
 
#9

AW: Zur Laufzeit, Zeilennummer feststellen

  Alt 16. Apr 2018, 12:29
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
34.931 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: Zur Laufzeit, Zeilennummer feststellen

  Alt 16. Apr 2018, 13:23
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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