Zitat:
Warum?
Formatiere mal den Quelltext ordentlich und dann sieht du es bestimmt.
Wollte ich gerade auch drauf hinweisen.
......
Im Code
compareDate(vor,nach)
steht
vor vor
nach. In der Funktion
Zeitraum
ist in der Zeile
wievieltePackung(Tagedazwischen(dt, vorTag))
der vorTag an zweiter Stelle. Ich weiß nicht welche Tage in dt stehen, aber ich gehe davon aus, dass es nachTage sind. Vielleicht solltest du für den Fall in der Funktion Tagedazwischen zuerst vor und nach sortieren, also prüfen ob vor auch wirklich das frühere Datum ist. Ansonsten prüfst du drauf ob das spätere Datum vor dem älteren Datum steht. Das Ergebnis wäre in dem Fall -1.
Danke Popov,
Ein Ergebnis war falsch und deshalb habe ich die Funktion und es konnte nur die Funktion sein, im OnKeyDown Ereignis eines TEdits getestet und eben entdeckt, dass egal, was für ein Datum ich eingebe, ob größer oder kleiner als das 2. Datum immer eine 1 ausgegeben wird, auch wenn die beiden Datums gleich sind.
Hier der einfache Test über ein Editfeld:
Delphi-Quellcode:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
t:TDate;
begin
if key = VK_Return then
begin
Try
if Edit1.Text = '' then
t := Date
else
t:= strtodate(edit1.Text);
Zeitraum(t);
Except
Zeitraum(now);
end;
end;
end;