Zitat von
negaH:
Ich weis das meine Worte eine harte Kritik sind, aber besser die Tatsachen auf den Tisch gelegt als drumherum geredet.
Sehe ich auch so und finde es auch gut.
Zitat:
1.) bei häufigen Aufrufen, zb. in Calendarcontrols, spielt die Performance eine große Rolle
Sicherlich, dass ist mir bewusst. Ich schrieb diese Funktion auch nicht für eine Kalenderkomponente, sondern weil ich so etwas in meinem Programm brauchte. Und da ich dachte es wäre eventuell für den ein oder anderern nützlich, habe ich es mal hier herein gestellt.
Zitat:
2.) die Frage der Gültigkeit deiner Funktion ist entscheidend, denn deine kann nur in einem Bruchteil (Jahr muß 1200 bis 2700 sein), angewendet werden.
Ist mir auch klar, da ich es aber nur in diesem Zeitpunkt brauchte habe ich es nur so geschrieben. Man könnte die Funktion auch einfach weiter ausdehnen, indem man hier
Delphi-Quellcode:
case centurynumbers of
15,19,23,27 : step4 := 0;
14,18,22,26 : step4 := 2;
13,17,21,25 : step4 := 4;
12,16,20,24 : step4 := 6;
end;
den Code entsprechend um weitere Jahrhunderte erweitert, es würde trotzdem nie an TDateTime herankommen, wie du schon richtig erwähnt hast.
Zitat:
3.) dein Source sagt einem erfahrenen Programmierer das du garnicht weist wie TDateTime funktioniert. Denn wenn du es wüsstest würdest du eingestehen das dein Source "von hinten in den Kopf und dann durch die Brust" programmiert ist.
Jupp, gestehe ich gerne ein. Ich hab mich tatsächlich nur sehr flüchtig mit TDateTime beschäftigt, da ich aber schnellstens eine solche Funktion brauchte habe ich in der Wikipedia nach einer Lösung gesucht, und diese dann mit Delphi umgesetzt. Das es bessere und andere Wege gibt war mir immer bewusst, trotzdem dachte ich vielleicht könnte es jemand gebrauchen. Sollte dem nicht so sein kann dieser Thread meinetwegen auch gern in eine andere Forensparte verschoben werden.
Edit: Neue Version siehe oben