AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ini file automatisch ergänzen, Exception handling

Ein Thema von bernhard_LA · begonnen am 6. Jun 2020 · letzter Beitrag vom 9. Jun 2020
Antwort Antwort
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#1

Ini file automatisch ergänzen, Exception handling

  Alt 6. Jun 2020, 12:04
ich wollte mit folgendem Code automatisch fehlenden Einträge in einer Ini Datei ergänzen


Delphi-Quellcode:
  result := GetINifileInfos_AS_STRING(FileName, MySectionIDENT, MySectionValue);

  try
      testbool := StrToBool(result); // exception bekomme ich wenn der Wert ungleich 0 oder 1

  except

      Raise Exception.Create('Error happened, reading boolean from ini file');


      SetInifileInfos( Filename, MyValue, false); // Wird nicht ausgeführt ???

  end;

wenn der Eintrag nicht vorhanden ist wird die Exception zwar geworfen, allerdings wird nicht der fehlenden Eintrag in der Ini geschrieben....
Starten der *.exe vom Explorer aus hat auch nicht geholfen


( http://etutorials.org/Programming/ma...th+Exceptions/ )
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
741 Beiträge
 
#2

AW: Ini file automatisch ergänzen, Exception handling

  Alt 6. Jun 2020, 12:30
Du musst die Funktion VOR dem raise aufrufen.
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Ini file automatisch ergänzen, Exception handling

  Alt 6. Jun 2020, 22:49
das war's ... , Danke
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: Ini file automatisch ergänzen, Exception handling

  Alt 7. Jun 2020, 12:14
Abgesehn davon
Zitat:
StrToBool(result); // exception bekomme ich wenn der Wert ungleich 0 oder 1
Keine Zahl (Integer mit 0=False und Anderes=True) und nicht 'True' oder 'False'

Und warum kommt niemand auf die Idee Delphi-Referenz durchsuchenTryStrToBool oder Delphi-Referenz durchsuchenStrToBoolDef zu benutzen?

ich hatte bei uns im Programm früher sehr oft sowas wie
Delphi-Quellcode:
try
  i := StrToInt(S);
except
  i := 0;
end;
gefunden und das sogar in einigen OnPaint-Ereignissen.

Als jemand der öfters mal debuggt würde ich den Ersteller solcher Codes nur zu gern erwürgen.
Bei dir bekommt man dann z.B. zwei Exceptions im Debugger um die Ohren geworfen, anstatt nur Einer.

Zitat:
Delphi-Quellcode:
try
  ...
except
  ...
  raise Exception.Create('uninformativer nutloser Text, wo man anschließend nicht mehr weiß warum es knallte');
end;
Per se sollte man auch für solche Codes mindestens gesteinigt werden.

Gut, hier gibt es nur eine Exception, womit es auch nur einen Zustand gibt,
aber grundsätzlich sollte man niemals die ursprüngliche Exception verfälschen und durch einen vollkommen nutzlosen Text ersetzen.
Maximal den Text der Exception um Zusatzinfos erweitern.
Wenn das Programm ein Log hat, dann kann die originale Fehlermeldung auch dort rein.

z.B. wenn man FileName, MySectionIDENT, MySectionValue und Result in den Fehlertext aufnimmt, dann könnte man die originale Message durch dieses ersetzen, da der Informationsgehalt mindestens gleichwertig ist.
Und dann steht in deiner Meldung nichts davon, dass der Fehler behoben wurde. Wenn jetzt jemand auf die Idee kommt in die INI zu schauen, dann entdeckt er dort keinen Fehler mehr und hält den Programmierer dieser Software für dämlich, weil dort nichts falsch drin ist.

Außerdem, warum kein GetINifileInfos_AS_BOOLEAN(S: string): Boolean was eine Exception liefert,
oder GetINifileInfos_AS_BOOLEAN(S: string; out Value: Boolean): Boolean; wo stattdessen der Status als Boolean geliefert wird?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 7. Jun 2020 um 13:05 Uhr)
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.444 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Ini file automatisch ergänzen, Exception handling

  Alt 9. Jun 2020, 07:23
Und warum kommt niemand auf die Idee Delphi-Referenz durchsuchenTryStrToBool oder Delphi-Referenz durchsuchenStrToBoolDef zu benutzen?
Gab es früher nicht. (Leider steht in der verlinkten Doku nicht ab wann die eingeführt wurden. Bei den Windows-API Docs steht sowas dabei.)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
969 Beiträge
 
Delphi 6 Professional
 
#6

AW: Ini file automatisch ergänzen, Exception handling

  Alt 9. Jun 2020, 08:09
Hmm..

Und warum kommt niemand auf die Idee Delphi-Referenz durchsuchenTryStrToBool oder Delphi-Referenz durchsuchenStrToBoolDef zu benutzen?
Gab es früher nicht. (Leider steht in der verlinkten Doku nicht ab wann die eingeführt wurden. Bei den Windows-API Docs steht sowas dabei.)

TryStrToBool / StrToBoolDef sind Funktionen aus SysUtils, welche zumindestens hier in D6 schon vorhanden waren...
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
Antwort Antwort


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:56 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