AGB  ·  Datenschutz  ·  Impressum  







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

CompareDate gibt immer 1 aus...

Ein Thema von Codix32 · begonnen am 17. Mai 2015 · letzter Beitrag vom 26. Mai 2015
 
Benutzerbild von himitsu
himitsu

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

AW: CompareDate gibt immer 1 aus...

  Alt 26. Mai 2015, 01:05
Fehlerbehandlung sollte mit eine der ersten Dinge sein, die man unbedingt lernen sollte.

Einfach nur das verwendete StrToDate durch eine der beiden fehlerbehandelnden Funktionen austauschen und dafür das Try-Except weglassen.


Oder alles so lassen und blos das Try-Except weglassen. Dann bekommt der Bediener eine Fehlermeldung und der nachfolgende Code wird nur ausgeführt, wenn er die Eingabe richtig macht.
Sonst weiß er garnicht, daß das eingegebene Datum falsch ist und er wundert sich nur, warum dein Programm "Schrott" berechnet, also mit dem "falschen" Datum.



Debugge mal Programme, welche Code wie Diesen benutzen, was auch zu oft in Fremdkomponenten vor kommt.
Da wird man verrückt und will den Programmier davon nur noch erwürgen, weil das Programm so ständig sinnlos irgendwo hängen bleibt.
Delphi-Quellcode:
S := 'abc';
try
  i := StrToInt(S);
except
  i := 0;
end;
ShowMessage(IntToStr(i));
Richtiger wäre es so
Delphi-Quellcode:
S := 'abc';
i := StrToIntDef(S, 0);
ShowMessage(IntToStr(i));
oder
Delphi-Quellcode:
S := 'abc';
if TryStrToInt(S, i) then
  ShowMessage(IntToStr(i));

// oder
S := 'abc';
if not TryStrToInt(S, i) then
  raise Exception.CreateFmt('Was soll denn der Scheiß? "%s" ist doch kein Integer!', [S]);
ShowMessage(IntToStr(i));
Oder halt ganz einfach so und nur arbeiten, wenn in "S" etwas "Ordentliches" drin steht.
Delphi-Quellcode:
S := 'abc';
i := StrToInt(S);
ShowMessage(IntToStr(i));
Aber wenn man mit Exceptions arbeitet, dann grundsätzlich niemals irgendwelche Fehler, vorallem keine Eingabefehler, blindlinks abfangen oder gar durch Irgendwas ersetzen und den Fehler ungezeigt verwerfen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
 


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 23:07 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-2025 by Thomas Breitkreuz