Servus
die Wochtage sind meines Wissens nach nicht irgendwo gespeichert, d.h. du mußt sie irgendwie vorgeben. (siehe Beispiel im #2 Beitrag, dementsprechend Monday, Tuesday, usw...)
Zu
case ... of
, funktioniert genauso, ruhig dem Prozessor das rechnen überlassen
Dein Fehler im case Beispiel:
Zitat:
...habe dann aber das Datum meines PC's auf morgen gestellt, dann zeigte mit der Datetimepicker den 3.1. an, warum?
Morgen (01.01.2007) ist Montag, also Dayofweek 2. Wenn Dayofweek 2 ist, zählt deine case Anweisung noch zwei Tage dazu, also der 03.01.2007.
Die richtige case-Anweisung müßte so lauten:
Delphi-Quellcode:
datetimepicker1.Date := now;
case DayOfWeek(DateTimePicker1.Date) of
1: DateTimePicker1.Date := DateTimePicker1.Date +1; //Sonntag
2: DateTimePicker1.Date := DateTimePicker1.Date ; //Montag
3: DateTimePicker1.Date := DateTimePicker1.Date +6; //Dienstag
4: DateTimePicker1.Date := DateTimePicker1.Date +5; //Mittwoch
5: DateTimePicker1.Date := DateTimePicker1.Date +4; //Donnerstag
6: DateTimePicker1.Date := DateTimePicker1.Date +3; //Freitag
7: DateTimePicker1.Date := DateTimePicker1.Date +2; //Samstag
end;
Zitat:
Bei der while-Version, wieso <> 2? wie wäre der Code für die ganze Woche?
heißt: Solange der Wochentag im Datetimepicker nicht Montag (dayofweek=2) ist, zähle einen Tag dazu. Der Code für die ganze Woche ist:
Delphi-Quellcode:
while dayofweek(Datetimepicker1.Date) <> 2 do
Datetimepicker1.Date := datetimepicker1.Date + 1;
Guten Rutsch
[Edit] Mein Gott bin ich langsam, 2 Antworten, während ich eine geschrieben hab. Naja egal, die Erklärung warum die while Schleife immer funktioniert steht ja da
Und die richtige case Anweisung auch
[/Edit]