Forum: Sonstige Fragen zu Delphi
Delphi
by Amateurprofi,
7. Jan 2010
Danke für den Hinweis bezüglich Edit-Button. Aber ich habe im Momeent nicht vor noch etwas hinzuzufügen.
Falls sich der Hinweis darauf bezieht, daß ich kurz hintereinander zwei Beiträge geschrieben habe : Ich hab das ganz bewußt in zwei Beiträge gepackt, weil ich auf zwei Beiträge von zwei Usern reagiert habe.
Forum: Sonstige Fragen zu Delphi
Delphi
by Amateurprofi,
7. Jan 2010
Nein. Es wäre falsch, ein Trunc durchzuführen, ohne vorher 0.5 zu addieren.
Ich hab mal in die Funktion die Zwischenwerte eingefügt, da wird dann wohl jedem klar, daß ein simples Trunc nicht ausreicht.
Aufruf : XWeekOfDate(EncodeDate(2009,01,01));
function xWeekOfDate(A: TDateTime): Integer;
var
Day: Integer;
Y,M,D: Word;
Forum: Sonstige Fragen zu Delphi
Delphi
by Amateurprofi,
7. Jan 2010
Vielleicht versuchst du es noch einmal.
Die Nachkommastellen dürfen keinesfalls einfach ignoriert werden - es sei denn man legt Wert auf Fehler.
Forum: Sonstige Fragen zu Delphi
Delphi
by Amateurprofi,
7. Jan 2010
Bei mir nicht.
Beispiele:
01.01.2010 : 52 (Richtig : 53)
02.01.2010 : 52 (Richtig : 53)
03.01.2010 : 52 (Richtig : 53)
Alle Tage des Jahres 2009.
Im Zeitraum 15.10.1582 bis 31.12.2499 bringt ein einfaches Trunc(...) an 144918 (von 335006) Tagen ein falsches Ergebnis. (Zumindest wenn ich bei all dem, was ich gemacht habe nicht völlig gepennt habe)
Der Fehler tritt bei mir auf:
1) An...
Forum: Sonstige Fragen zu Delphi
Delphi
by Amateurprofi,
7. Jan 2010
Daniel,
lies doch mal etwas genauer, wie ich das Round(...) ersetzt habe.
Ich habe nicht einfach (wie von dir vorgeschlagen) das "Round" durch "Trunc" ersetzt sondern durch Trunc(0.5 + ...).
Du schlugst vor, mit Trunc den Nachkommateil abzuschneiden.
Ich runde ab, wenn der Nachkommaanteil < 0.5 ist und auf, wenn er >= 0.5 ist.
Round würde dann, wenn der Nachkommaanteil = 0.5 ist, auf die...
Forum: Sonstige Fragen zu Delphi
Delphi
by Amateurprofi,
6. Jan 2010
Nein, das bringt nichts.
Hagens Routine arbeitet fehlerfrei, solange der TDateTime Wert ganzzahlig ist.
Wenn der TDateTime-Wert einen Zeitanteil hat, bringt sie an bestimmten Tagen dann fehlerhafte Resultate, wenn der Zeitanteil >= 12 Stunden ist.
Also sollte am Anfang der Routine eine Zeile
A := Int(A);eingefügt werden.
Vielleicht sollte man die letzte Zeile ändern
von
Result :=...