AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Bei try..except Zeilenr. der fehlerhaften Zeile ausgeben?
Thema durchsuchen
Ansicht
Themen-Optionen

Bei try..except Zeilenr. der fehlerhaften Zeile ausgeben?

Ein Thema von KoS · begonnen am 19. Mär 2007 · letzter Beitrag vom 19. Mär 2007
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Bei try..except Zeilenr. der fehlerhaften Zeile ausgeben

  Alt 19. Mär 2007, 11:52
Schau Dir mal MadExcept von Madshi an, das dürfte Dir alles liefern was Du willst. Das Lizenzmodell ist auch sehr erträglich, und vor allem ist das ganze wirklich bequem in der Anwendung ohne grossartig Code zu schreiben.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 17. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: Bei try..except Zeilenr. der fehlerhaften Zeile ausgeben

  Alt 19. Mär 2007, 11:55
Zitat von KoS:
(...) aber glaubst du das ich dann bei über 250 Zeilen weiß welche von den verschiedenen z.b. StrToFloat Funktionen probleme bei der Umwandlung macht?
Und ich möchte vermeiden um jede einzelne ein try..except zu machen.
Wie wäre es denn mit Fehlervermeidung?
Oder anders herum: Welche Fehlerfälle könnten denn passieren, die du nicht vorher abfangen könntest, bevor du den String umzuwandeln versuchst?

Es hat fast den Anschein, als würdest du Exceptions als "Stilmittel" zur Gültigkeitsüberprüfung verwenden, anstatt folgendes zu tun:
Delphi-Quellcode:
if StringIstSauber(StringA) then
   FloatB := StrToFloat(StringA)
else
   SchreibeProtokoll('ProtEintrag');
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#13

Re: Bei try..except Zeilenr. der fehlerhaften Zeile ausgeben

  Alt 19. Mär 2007, 12:07
Mit ExceptAddr und einem MAP Datei kann man höchstens die Methode/Procedure ermitteln, aber nicht die Zeilennummer. Diese kann man damit nicht ermitteln. Von daher bringt dich das nicht weiter.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#14

Re: Bei try..except Zeilenr. der fehlerhaften Zeile ausgeben

  Alt 19. Mär 2007, 12:12
Zitat von turboPASCAL:
Nein. In der Exec gibts ja dann och keine Zeihlennummer nicht.
Doch, ist gar kein größeres Problem. Suche mal nach Hier im Forum suchenmadExcept - da gibt es hier auch ein Tutorial.

.......

P.S.: Ich sehe gerade OldGrumpy hat es auch schon empfohlen Aber es ist wirklich gut und ich nutze es in unserer Haussoftware ebenfalls.
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#15

Re: Bei try..except Zeilenr. der fehlerhaften Zeile ausgeben

  Alt 19. Mär 2007, 12:20
MadExcept nutzt vermutlich auch nur die DebugInfos. Es wäre interessant wie man diese auslesen kann bzw. wie diese aufgebaut sind.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#16

Re: Bei try..except Zeilenr. der fehlerhaften Zeile ausgeben

  Alt 19. Mär 2007, 12:23
Zitat von SirThornberry:
MadExcept nutzt vermutlich auch nur die DebugInfos. Es wäre interessant wie man diese auslesen kann bzw. wie diese aufgebaut sind.
Tut es, ja. Wenn ich mich recht entsinne, dann habe ich für 4 Jahren oder so hier mal Source Code dafür gepostet...

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
KoS

Registriert seit: 9. Jun 2006
55 Beiträge
 
#17

Re: Bei try..except Zeilenr. der fehlerhaften Zeile ausgeben

  Alt 19. Mär 2007, 12:31
Ich hab mir das madExcept mal auf der Homepage angeschaut, aber kann das Teil auch im Hintergrund aggieren, ohne sichtbare Fenster aufzurufen?

Es handelt sich bei mir nämlich um einen Windows-Dienst, der natürlich keine Fenster öffnen soll.

@IngoD7: Natürlich versuche ich vorher einige Fehler vorweg zu nehmen, nur leider gelingt das nicht immer so wie es soll, da es sich nicht direkt um statische Quellen Handelt. Genau genommen werden die Daten von einer Webseite bezogen und der HTML-Code wird aus irgendwelchen bisher noch nicht auffindbaren Gründen teilweise falsch übermittelt, bzw. falsch vom Programm verarbeitet. (ich würde mal 15-30% Fehlerquote schätzen, genau kann ich das nicht sagen)

Was mir erst aufgefallen ist:
'309.29' is not a valid floating point value
Irgendwie finde ich das komisch, Float arbeitet doch mit . und das klappt an allen möglichen Stellen und ich prüfe auch mit einer Routine ob es sich um ein Float handelt, aber in diesem Fall schlägt das StrToFloat immer fehl.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: Bei try..except Zeilenr. der fehlerhaften Zeile ausgeben

  Alt 19. Mär 2007, 12:35
Zitat:
309.29' is not a valid floating point value
Irgendwie finde ich das komisch, Float arbeitet doch mit . und das klappt an allen möglichen Stellen und ich prüfe auch mit einer Routine ob es sich um ein Float handelt, aber in diesem Fall schlägt das StrToFloat immer fehl.
StrToFloat verwendet die Systemeinstelleung für den dezimalTrenner (DecimalSeparator) bzw Tausendertrenne ( ThousandSeparator), welche bei einem deutschen Windows ',' und '.' sind.
Markus Kinzler
  Mit Zitat antworten Zitat
KoS

Registriert seit: 9. Jun 2006
55 Beiträge
 
#19

Re: Bei try..except Zeilenr. der fehlerhaften Zeile ausgeben

  Alt 19. Mär 2007, 12:50
Zitat von mkinzler:
StrToFloat verwendet die Systemeinstelleung für den dezimalTrenner (DecimalSeparator) bzw Tausendertrenne ( ThousandSeparator), welche bei einem deutschen Windows ',' und '.' sind.
Hmm, ich war bisher immer der Meinung das klappt mit dem Punkt, das kann aber sein das die Werte alle keine Nachkommastelle hatten.
Kann man das irgendwo festlegen ob Punkt oder Komma verwendet werden soll? Wenn das Programm auf einem englischem System läuft würde ja dann wieder ne Exception kommen.
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 17. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#20

Re: Bei try..except Zeilenr. der fehlerhaften Zeile ausgeben

  Alt 19. Mär 2007, 12:51
Zitat von KoS:
@IngoD7: (...)und der HTML-Code wird aus irgendwelchen bisher noch nicht auffindbaren Gründen teilweise falsch übermittelt, bzw. falsch vom Programm verarbeitet.
Eher letzteres, oder? Und genau daran gilt es, zu arbeiten.

Zitat von KoS:
'309.29' is not a valid floating point value
Irgendwie finde ich das komisch, Float arbeitet doch mit . und das klappt an allen möglichen Stellen und ich prüfe auch mit einer Routine ob es sich um ein Float handelt, aber in diesem Fall schlägt das StrToFloat immer fehl.
Siehste, da geht's schon los. "." durch "," ersetzen und die Welt sieht schon gleich viel rosiger aus.

Das ist das, was ich grundsätzlich meinte: Exceptions sind (nach meiner bescheidenen Meinung) allermeistens das Ende eines (programmtechnischen) "Missverständisses". Sobald eine geworfen wird, gucken warum und Missverständnis aus dem Weg räumen. Ganz besonders bei häufigen Exceptions. Solange Exceptions die Regel und nicht die Exception (=Ausnahme ) sind, hat der Programmierer noch andere Dinge zu tun, als sich über viele oder weniger viele try..except-Blöcke Gedanken zu machen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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