Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#3

Re: DateTimePicker Min und MAx Probleme

  Alt 30. Sep 2008, 10:49
Hallo,

habe mal rumprobiert, der Fehler entsteht (höchstwahrscheinlich) nicht in der von Dir angegebenen Zeile, sondern eine Zeile darüber.

Folgende Annahme: Wir haben eine globale Variabel i vom Typ Integer und gehen davon aus, dass i = 0 ist.

Meine Testprozedur ohne Datei:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var
          ad : TDateTime;
          ed : TDateTime;
begin
  ad := Now;
  ed := Now + i;
  dtp_ad.Date:=ad; //dtp_ad = DateTimePicker; ad= AnfangsDatum, typ TDatetime

  dtp_ad.MinDate:=trunc(ad); //hier kommt fehler, beim 2. öffnen
  dtp_ad.MaxDate:=trunc(ed); //ed=EndDatum, typ TDatetime

  dtp_ad2.Time:=frac(ad);

  dtp_ed.Date:=ed;
  dtp_ed.MinDate:=trunc(ad);
  dtp_ed.MaxDate:=trunc(ed);
  dtp_ed2.Time:=frac(ed);
  Inc(i);
end;
Was passiert hier?
ad = heute, ed = morgen, damit sind die Zeilen 6 und 7 abgefackelt.
Zeile 8: dtp_ad.Date = heute
Zeile 10: dtp_ad.MinDate = heute
Zeile 11: dtp_ad.MaxDate = morgen
Zeile 15: dtp_ed.Date = morgen
Zeile 16: dtp_ed.MinDate = heute
Zeile 17: dtp_ed.MaxDate = morgen

Das funktioniert und i wird um 1 erhöht.
Nächster Klick:

Was passiert jetzt?
ad = heute, ed = übermorgen, damit sind die Zeilen 6 und 7 abgefackelt.
Zeile 8: dtp_ad.Date = heute
Zeile 10: dtp_ad.MinDate = heute
Zeile 11: dtp_ad.MaxDate = übermorgen
Zeile 15: dtp_ed.Date = übermorgen

Das geht nicht, da dtp_ed.MaxDate noch auf morgen steht, deshalb passiert in diesem Beispiel in Zeile 15 bei der Zuweisung ein Fehler. Warum beim Debuggen die Zeile 16 als fehlerhaft angezeigt wird, kann ich nicht sagen. Die Fehlermeldung besagt jedenfalls, dass das Datum das Maximum heute übersteigt.

Abhängig von den Werten aus Deinen Dateien, kann der Fehler in Zeile 8 oder 15 auftreten, vor dem Setzen von .Date musst Du sicherstellen, dass .MinDate und .MaxDate entsprechend gesetzt sind. Es dürfte sich hier also um ein Reihenfolgeproblem der Programmzeilen handeln.

Stephan
  Mit Zitat antworten Zitat