Autor Beitrag
Christoph Englmann
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 276



BeitragVerfasst: Di 10.07.07 11:18 
Hallo,

hab ein ganz einfaches Problem:

mochte mittels

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
Datum :TDateTime;

begin
if  ( (now-Datum) < (1/24/60*5) ) then
....


leider hüpft mir das Programm jedesmal bei der if Bedingung aus der Procedure.
Frage:
Was ist daran falsch? (hängt das mit unterschiedlichen Datentypen zusammen?)

danke
christoph
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Di 10.07.07 11:19 
Schau dir mal die Funktion der Unit DateUtils an

_________________
Markus Kinzler.
Christoph Englmann Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 276



BeitragVerfasst: Di 10.07.07 17:57 
Hallo,

erstmal danke...

arbeite jetzt mit der Funktion MinutesBetween...

allerdings hab ich da noch ein kleines Problem:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
                  test := Tag+'.'+Monat+'.'+Jahr+' '+Uhrzeit+':00';
                  temp_date := StrToDateTime(test);
                  temp_int := MinutesBetween(now,test_date);
                  //wenn Eintrag zu now kleiner 5 Minuten differiert, dann oky
                  if   temp_int < 6 then
                  ...


test, Tag, Monat, Jahr und Uhrzeit sind StringVariablen.
test hat nach Zuweisung den Wert '10.07.2007 17:25:00'.
nach
temp_date := StrToDateTime(test);
hat die Variable aber den Wert 0!

kann mir einer sagen warum?


danke
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Di 10.07.07 18:31 
Möglicherweise erwartet die Funktion ein anderes Format, versuch mal es mit zuübergeben.

_________________
Markus Kinzler.
Christoph Englmann Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 276



BeitragVerfasst: Di 10.07.07 20:24 
also:

jetzt hab ichs mit
EncodeDateTime
versucht:


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
var
  Jetzt :TDateTime;
  Datumsformat :TFormatSettings;
  Datumsstring :String;
  Datum_date :TDateTime;
  Datum_differenz :integer;

begin
                  Jetzt := now;
                  DateTimeToString(Jahr,'YYYY',now);
                  Monat := Monatsumwandlung_mmm_MM(copy(Dateiliste[i],43,3));
                  Tag := copy(Dateiliste[i],47,2);
                  Uhrzeit := copy(Dateiliste[i],50,5);
                  Datumsstring := Tag+'.'+Monat+'.'+Jahr+' '+Uhrzeit+':00';
                  Datum_date := EncodeDateTime(StrToInt(Jahr),StrToInt(Monat),StrToInt(Tag),StrToInt(copy(Uhrzeit,1,2)),StrToInt(copy(Uhrzeit,4,2)),0,0);
                  Datum_differenz := MinutesBetween(Jetzt,Datum_date);
                  //wenn Eintrag zu now kleiner 5 Minuten differiert, dann oky
                  if   Datum_differenz < 6 then
                  begin
                    Logfiles_aktuell := true;
                  ......


Es funktioniert jetzt zwar die Datumsumwandlung, nur flieg ich jedesmal bei
if Datum_differenz < 6 then
ohne Fehlermeldung aus der Procedure raus...
(Datum_differenz hat den Wert 0 (zuweisung funktioniert auch, hab ich getestet))

Hilfe!!