![]() |
Datum generiert - teilweise seltsames ergebnis
hi leute, ich hab folgendes problem:
ich hab mir en code geschrieben, mit dem ich beliebige daten in reihe generieren und in einen array speichern kann(als tdatetime). das amcht er auch alles wunderbar, inclusive schaltjahre usw.. das problem taucht erst auf wenn der 31.12.2006 überschritten wird, da zeigt er mir nämlich in meiner listbox 7 mal 30.12.1899 an und macht dann bei 8.1.2007 wieder korrekt weiter, bis zum 25.01, denn der 26.01 ist wiederrum der 30.12.1899 und das wieder für 7 tage. das selbe wiederholt sich am 19.2, 16.3., wobei danach, zumindest das jahr 2007(soweit reciht meine anzeige) fehlerfrei ausgegeben wird. ich hoffe ihr versteht mein problem und amcht mich bitte auf einen mathematischen fehler oder ähnliches aufmerksam, bzw habt eine lösung meines problems :-D . hier der relevante code:
Delphi-Quellcode:
dnke für eure hilfe im vorraus^^
day := 1;
month := 1; year := 2006; for d := 1 to 1000 do begin date_dat_str[d] := StrToDate(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(year)); day := day+1; if (day > 31) and ((month = 1) or (month = 1) or (month = 3) or (month = 5) or (month = 7) or (month = 8) or (month = 10) or (month = 12))then begin day := 1; month := month+1; end; if (day > 30) and ((month = 4) or (month = 6) or (month = 9) or (month = 11))then begin day := 1; month := month+1; end; if (day > 29) and (month = 2) and ((year = 2008) or (year = 2012) or (year = 2016) or (year = 2020) or (year = 2024) or (year = 2028) or (year = 2032) or (year = 2036) or (year = 2040))then begin day := 1; month := month+1; end; if (day > 28) and (month = 2) and ((year <> 2008) and (year <> 2012) and (year <> 2016) and (year <> 2020) and (year <> 2024) and (year <> 2028) and (year <> 2032) and (year <> 2036) and (year <> 2040)) then begin day := 1; month := month+1; end; if month > 12 then begin month := 1; year := 2007; end; |
Re: Datum generiert - teilweise seltsames ergebnis
Warum verwendest du nicht einfach EncodeDate()?
|
Re: Datum generiert - teilweise seltsames ergebnis
Hallo,
ich habe mir jetzt nicht alles angesehen, aber ich glaube Du solltest dich mal mit der Unit "DateUtils" beschäftigen. Da sind jede Menge Funktionen für Daten vorhanden, z.B. IsLeapYear für Schaltjahr usw. Gruß s14 |
Re: Datum generiert - teilweise seltsames ergebnis
Wegen
![]() |
Re: Datum generiert - teilweise seltsames ergebnis
danke für den hinweis, hab vorher im inet net viel über die befehle gefunden :-D . sorry dass ich gestört hab^^, dennoch frag ich mich woran meine ergebnisse liegen;)
carsten |
Re: Datum generiert - teilweise seltsames ergebnis
Hallo Carsten,
du störst ganz gewiss nicht. Die ![]() Nachtrag: Dein Code scheint zu funktionieren, wenn man den Jahresübertrag korrigiert. Aber da ein Datum intern als der ganzzahlige Teil eines float-Wertes geführt wird, geht es alles auch einfacher:
Delphi-Quellcode:
Grüße vom marabu
uses
Types; // TIntegerDynArray const MAXDAYS = 1000; var i, iStart: Integer; ida: TIntegerDynArray; begin iStart := Trunc(EncodeDate(2006, 1, 1)); SetLength(ida, MAXDAYS); for i := Low(ida) to High(ida) do ida[i] := iStart + i; end; |
Re: Datum generiert - teilweise seltsames ergebnis
das is mir jetzt shcon etwas peinlich, danke :oops: . ich neig immer dazu alles komplizierter zu amchen als es ist^^
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:00 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