Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi trystrtodatetime (https://www.delphipraxis.net/28235-trystrtodatetime.html)

Dreas 21. Aug 2004 18:40


trystrtodatetime
 
Hi,

es gibt ja eine function die überprüft, ob eine variable ein gültiges datum enthält und true oder false wiedergibt.
function TryStrToDateTime(const S: string; out Value: TDateTime): Boolean; overload;

Irgendwie bekomme ich das nicht richtig eingebaut.

So hab ich probiert:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if TryStrToDateTime(a):=false then
label1.Caption:=('Format ungültig'+#1310#+'Datum.txt überprüfen!');
else
label1.caption:=(datetimediff(strtodatetime(a), ((now))));
end
end;
Hab ich da den total falschen Ansatz?

Luckie 21. Aug 2004 19:01

Re: trystrtodatetime
 
Kuck dir doch mal die Parameter an. Als erstes übergibst du den String mit dem Datum und der zweite Parameter enhält dann das Datum, wenn es geklappt hat.
Delphi-Quellcode:
var
  s: String;
  Mydate: TDateTime;
begin
  s := '2004-08-21';
  if TryStrToDateTime(s, Mydate) then
    ShowMessage('hat geklappt')
  else
    ShowMessage('Hat nicht geklappt');

paelesoft 21. Aug 2004 19:12

Re: trystrtodatetime
 
TryStrToDateTime ist schon vom Typ Boolean und braucht in Pascal und C nicht
mit dem Wert "False" oder "True" gegengeprüft werden:

Delphi-Quellcode:
if TryStrToDateTime(a) = False then ...
ist also

Delphi-Quellcode:
if not TryStrToDateTime(a) then
Weiterhin wird beim Prüfen auf Gleichheit in Pascal(Delphi) das "=" Zeichen verwendet.
Das Zeichen ":=" dagegen ist eine Zuweisung z.B.:

Delphi-Quellcode:
a := 5
Danach hat "a" also den Wert "5"

Luckie 21. Aug 2004 19:14

Re: trystrtodatetime
 
Zitat:

Zitat von paelesoft
TryStrToDateTime ist schon vom Typ Boolean und braucht in Pascal und C nicht
mit dem Wert "False" oder "True" gegengeprüft werden:

Das ist aber nicht sein Problem. Die Parameter stimmen einfach nicht.

paelesoft 21. Aug 2004 19:16

Re: trystrtodatetime
 
Ja, geht auch mit Prüfen auf "False". Aber ":=" ist garantiert ein Problem!

Luckie 21. Aug 2004 19:17

Re: trystrtodatetime
 
Das auch.

paelesoft 21. Aug 2004 19:23

Re: trystrtodatetime
 
Ob es vielleicht aus Performancegründen besser ist Folgendes zu probieren:

Delphi-Quellcode:
begin
  try
    label1.caption:=(datetimediff(........
  except
    label1.caption:='Datum ungültig';
  end;
end;
????

Dreas 21. Aug 2004 19:40

Re: trystrtodatetime
 
Hi,

Habs hinbekommen.

Das mit := war echt blöd. :oops:

Find ich super, so viele Antworten in so kurzer Zeit.
Cooles Forum!

Vielen Dank euch allen für die schnelle Hilfe.

paelsoft, dein vorschlag hat nicht hingehauen.
Da kommt trotzdem ein econvert-error bei raus.

paelesoft 22. Aug 2004 17:24

Re: trystrtodatetime
 
Hi Dreas,

Kommt die EConvert-Exception auch, wenn du das Programm nicht mit F9 in der IDE
sondern die EXE-Datei direkt startest? (So würde es ja später auch der Anwender
machen)

Dreas 23. Aug 2004 23:05

Re: trystrtodatetime
 
Das hab ich gar nicht ausprobiert muss ich ehrlich sagen.

Aber jetzt, da du das erwähnst, fällt mir ein, dass ich das gleiche bei einem Programm schon mal hatte.
(Habe seit langer Zeit nichts mehr mit Delphi gemacht).
Da gabs bei F9 auch ein error und bei der fertig kompilierten exe dann nicht mehr.

Hast Recht, dann würde try ... except wohl auch funktionieren.
Probier ich aber nicht mehr aus, Programm ist fertig und läuft.

Danke, dass du mir das wieder in Errinnerung gerufen hast! :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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 by Thomas Breitkreuz