Hallo ihr,
das Problem liegt nicht bei IncMinute, sondern bei der Zeit die verwendet wird, oder genauer gesagt der Tag. Mach mal folgendes:
Delphi-Quellcode:
bookDate := StrToDateTime('00:10');
ShowMessage(DateTimeToStr(bookdate));
bookDate := IncMinute(bookDate, -30);
ShowMessage(DateTimeToStr(bookdate));
Das Ergebnis der ShowMessages:
Code:
30.12.1899 00:10:00
30.12.1899 00:20:00
Mache ich hingegen folgendes:
Delphi-Quellcode:
bookDate := StrToDateTime('00:10');
Bookdate := Bookdate+1; //Darauf kommts an
ShowMessage(DateTimeToStr(bookdate));
bookDate := IncMinute(bookDate, -30);
ShowMessage(DateTimeToStr(bookdate));
In der markierten Zeile zaehle ich also einfach einen Tag zum Zeitstempel dazu, und jetzt sieht das Ergebnis so aus:
Code:
31.12.1899 00:10:00
30.12.1899 23:40:00
Das Problem liegt also darin, dass du vom "absoluten Nullpunkt" ausgehst. Du zaehlst also 10 Minuten dazu, dann 30 Minuten weg, und damit kommt Delphi aus irgendwelchen Gruenden nicht klar. Wie du gesehen hast, musst du dir einfach ein Datum reingeben, so dass du diesen Nullpunkt beim zurueckgehen nicht ueberschreitest.
Greetz
alcaeus