Dienstag, 24. Mai 2011

FPC: Auffüllen einer Zahl mit Nullen

Bei der Umwandlung von Ganzzahlen in Zeichenketten wird manchmal gewünscht, dass nach links bis zu einer bestimmten Länge mit Nullen aufgefüllt wird. Das lässt sich in Free Pascal mit der Funktion AddChar aus den StrUtils lösen. Ein Beispiel:

AddChar('0', IntToStr(123), 12)

Dieser Aufruf hätte die Zeichenkette »000000000123« zum Ergebnis. Man gibt also das Zeichen, mit dem aufgefüllt werden soll, an, dann die Zeichenkette, dann die gewünschte Länge.

Mittwoch, 11. Mai 2011

FPC: Ungenauigkeiten bei MinutesBetween

MinutesBetween (aus DateUtils) liefert manchmal ein Ergebnis, das um 1 vom erwarteten Ergebnis abweicht. So kann der Unterschied zwischen zwei TDateTime-Werten, die genau eine Minute auseinanderliegen, von der Funktion auch mal mit 0 angegeben werden. Der Grund dafür liegt in der üblichen Ungenauigkeit von Fließkommaoperationen.

Genauer ist nach meinen Erfahrungen in der Regel folgende Konstruktion:

Round(MinuteSpan(t1, t2))

Dabei sind t1 und t2 eben zwei TDateTime-Werte. Hier ist allerdings der aktuelle Rundungsmodus zu beachten, der von Round benutzt wird.