![]() |
try except in Funktion funktioniert nicht
Hallo,
ich habe eine Funktion, die einen DateTime in Unix umwandelt. Dazu nutze ich zwar DateTimeToUnix aus der Unit DateUtils, aber ich habe dies, um nicht immer wieder zu schreiben, in einer anderen Funktion gelagert, nur so funktioniert das try except nicht. Schreibe ich das jedesmal in das OnChange Ereignis, dann funktioniert es, ich würde es aber gern einfacher machen in dem ich es in eine von mir erstellte Funktion lagere:
Delphi-Quellcode:
Weis jemand Rat?
// so gehts nicht:
function DateTimeToUnixTime(DateTime: TDateTime): String; begin try Result := IntToStr(DateTimeToUnix(DateTime)); except Result := IntToStr(DateTimeToUnix(0)); end; end; procedure TForm1.Edit1Change(Sender: TObject); begin Edit2.Text := DateTimeToUnixTime(StrToDateTime(Edit1.Text)); end; // so gehts: procedure TForm1.Edit1Change(Sender: TObject); begin try Edit2.Text := IntToStr(DateTimeToUnix(StrToDateTime(Edit1.Text))); except Edit2.Text := IntToStr(DateTimeToUnix(0)); end; end; Gruß Mazel |
Re: try except in Funktion funktioniert nicht
was funktioniert den daran nicht genau?
also der unterschied zwischen deine beiden dingen ist:
Delphi-Quellcode:
bei deinem anderem beispiel jedoch nicht
try
Edit1.Text := IntToStr(DateTimeToUnix( StrToDateTime(Edit1.Text) // hier wird auch eine exception geworfen falls du kein gültiges datum hast )); except Edit1.Text := IntToStr(DateTimeToUnix(0)); end;
Delphi-Quellcode:
dort kann jetzt immernoch ein fehler passieren in :
function DateTimeToUnixTime(DateTime: TDateTime): String;
begin try Result := IntToStr(DateTimeToUnix(DateTime)); except Result := IntToStr(DateTimeToUnix(0)); end; end;
Delphi-Quellcode:
Edit1.Text := DateTimeToUnixTime(
StrToDateTime(Edit1.Text) // hier kann auch eine exception geworfen werden diese fängst du nicht ab ); hoffe ich konnte dir helfen gruß Konse |
Re: try except in Funktion funktioniert nicht
Mein Ziel war es mit try except den Fehler, wenn kein gültiges Datum im Editfeld steht, abzufangen und dann den Wert von DateTimeToUnix(0) auszugeben. Wenn ich den Code dazu in das OnChange Ereignis schreibe funktioniert dies auch. Nun dachte ich, weil ich die Funktion öfter vwerwende, diese in eine extra Funktion zu lagern damit für mich der Zugriff und Überblick einfacher wird. Jedoch funktioniert dies leider nicht. Ich dachte, das try except würde genau so reagieren wie im OnChange Ereignis, das tut es scheinbar aber nicht.
|
Re: try except in Funktion funktioniert nicht
Du könntest auch die Exception verhindern, wenn du TryStrToDateTime() verwenden würdest
|
Re: try except in Funktion funktioniert nicht
Danke für den Tipp, das funktioniert.
Gruß Mazel |
Re: try except in Funktion funktioniert nicht
Zitat:
nur du hast deine funktion falsch geschrieben. wenn du dir den code den ich dir da geschickt habe bzw. die kommentare anschaust, dann solltest du es sehen.
Delphi-Quellcode:
hättest du das strToDateTime in deine Funktion gesteckt und deine funktion so aufgebaut:
Edit1.Text := DateTimeToUnixTime(
StrToDateTime(Edit1.Text) // hier kann auch eine exception geworfen werden diese fängst du nicht ab );
Delphi-Quellcode:
hätte es so funktioniert wie du es haben wolltest, da die exception jetzt innerhalb
function DateTimeToUnixTime(DateTime: string): String;
begin try Result := IntToStr(DateTimeToUnix(StrToDateTime(DateTime))); except Result := IntToStr(DateTimeToUnix(0)); end; end; deines try except blockes auftritt. vorher hattest du diese nicht gecatched! beste grüße konse |
Re: try except in Funktion funktioniert nicht
Danke für diese Information. Das wusste ich nicht. Jetzt ist es aber klar, dass der Fehler durch StrToDateTime verursacht wird.
Was heißt denn gecatched? |
Re: try except in Funktion funktioniert nicht
dass du eine mögliche Exception mit hilfe eines try ... except/finally block abfängst .
|
Re: try except in Funktion funktioniert nicht
Zitat:
|
Re: try except in Funktion funktioniert nicht
Ich danke euch für die superschnellen superguten Antworten. :thumb:
Gruß Mazel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 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