AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi try except in Funktion funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

try except in Funktion funktioniert nicht

Ein Thema von Mazel · begonnen am 21. Feb 2007 · letzter Beitrag vom 21. Feb 2007
Antwort Antwort
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#1

try except in Funktion funktioniert nicht

  Alt 21. Feb 2007, 17:55
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:
// 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;
Weis jemand Rat?

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Konse

Registriert seit: 20. Feb 2007
Ort: Bayern
27 Beiträge
 
Delphi 7 Professional
 
#2

Re: try except in Funktion funktioniert nicht

  Alt 21. Feb 2007, 18:21
was funktioniert den daran nicht genau?
also der unterschied zwischen deine beiden dingen ist:
Delphi-Quellcode:
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;
bei deinem anderem beispiel jedoch nicht
Delphi-Quellcode:
function DateTimeToUnixTime(DateTime: TDateTime): String;
begin
  try
    Result := IntToStr(DateTimeToUnix(DateTime));
  except
    Result := IntToStr(DateTimeToUnix(0));
  end;
end;
dort kann jetzt immernoch ein fehler passieren in :

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
Warum ich Klingonische Programmierer so liebe:
- A true Klingon programmer does not comment his code
- You cannot truly appreciate Dilbert unless you´ve read in the original klingon
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#3

Re: try except in Funktion funktioniert nicht

  Alt 21. Feb 2007, 18:29
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.
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: try except in Funktion funktioniert nicht

  Alt 21. Feb 2007, 18:32
Du könntest auch die Exception verhindern, wenn du TryStrToDateTime() verwenden würdest
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#5

Re: try except in Funktion funktioniert nicht

  Alt 21. Feb 2007, 18:50
Danke für den Tipp, das funktioniert.

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Konse

Registriert seit: 20. Feb 2007
Ort: Bayern
27 Beiträge
 
Delphi 7 Professional
 
#6

Re: try except in Funktion funktioniert nicht

  Alt 21. Feb 2007, 19:57
Zitat von Mazel:
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.
das try except reagiert richtig.
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:
Edit1.Text := DateTimeToUnixTime(
       StrToDateTime(Edit1.Text) // hier kann auch eine exception geworfen werden diese fängst du nicht ab
);
hättest du das strToDateTime in deine Funktion gesteckt und deine funktion so aufgebaut:
Delphi-Quellcode:
function DateTimeToUnixTime(DateTime: string): String;
begin
  try
    Result := IntToStr(DateTimeToUnix(StrToDateTime(DateTime)));
  except
    Result := IntToStr(DateTimeToUnix(0));
  end;
end;
hätte es so funktioniert wie du es haben wolltest, da die exception jetzt innerhalb
deines try except blockes auftritt.
vorher hattest du diese nicht gecatched!

beste grüße
konse
Warum ich Klingonische Programmierer so liebe:
- A true Klingon programmer does not comment his code
- You cannot truly appreciate Dilbert unless you´ve read in the original klingon
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#7

Re: try except in Funktion funktioniert nicht

  Alt 21. Feb 2007, 21:10
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?
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Konse

Registriert seit: 20. Feb 2007
Ort: Bayern
27 Beiträge
 
Delphi 7 Professional
 
#8

Re: try except in Funktion funktioniert nicht

  Alt 21. Feb 2007, 21:12
dass du eine mögliche Exception mit hilfe eines try ... except/finally block abfängst .
Warum ich Klingonische Programmierer so liebe:
- A true Klingon programmer does not comment his code
- You cannot truly appreciate Dilbert unless you´ve read in the original klingon
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: try except in Funktion funktioniert nicht

  Alt 21. Feb 2007, 21:13
Zitat:
Was heißt denn gecatched?
Im sinne von abgefangen (in anderen Sprachen Aquivalent zu except)
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#10

Re: try except in Funktion funktioniert nicht

  Alt 21. Feb 2007, 21:15
Ich danke euch für die superschnellen superguten Antworten.

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  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 11:23 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