Mittwoch, 1. Februar 2012
Lazarus 0.9.30.2
Das habe ich eine Zeit lang nicht mitbekommen: Mittlerweile gibt es Lazarus in der Version 0.9.30.2. Die wesentliche Neuerung scheint zu sein, dass Lazarus jetzt auf der Version 2.4.4 von FPC aufbaut.
Donnerstag, 20. Oktober 2011
Ubuntu 11.10 kann nicht heruntergefahren werden
Nach der Aktualisierung von Ubuntu 11.04 auf 11.10 gab es einige Unstimmigkeiten auf meinem System. Zwei besonders auffallende Dinge waren, dass erstens das Menü zum Herunterfahren des Systems nicht mehr zur Verfügung stand (der Startknopf in der Systemleiste war verschwunden) und zweitens zahlreiche Piktogramme fehlten. Die Lösung war aber einfach:
- In der Systemleiste den Benutzer anklicken.
- »Benutzerkonten …« auswählen.
- »Alle Einstellungen« anklicken. Diese ersten drei Schritte waren nur ein Umweg, um an das Einstellungsmenü zu kommen, das ja fehlt, wenn der Startknopf nicht vorhanden ist.
- »Darstellung« anwählen.
- Das Thema einmal wechseln, zum Beispiel von Ambiance auf Radiance. Und wieder zurück. Jetzt sollte schon der Startknopf erscheinen, einige der fehlenden Piktogramme sind nach dieser Operation auch vorhanden.
- Neustart des Rechners. Nun finden auch die restlichen Piktogramme den Weg auf die Oberfläche. Eventuell reicht auch ein Neuanmelden.
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.
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.
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.
Mittwoch, 6. April 2011
Formatierung von Fließkommazahlen
Allgemein bekannt dürfte sein, dass Fließkommazahlen bei der Ausgabe mit Write(Ln) durch Angabe von Feldbreite und Anzahl der Nachkommastellen formatiert werden können. Diese Angaben werden mit Doppelpunkten an den auszugebenden Wert angehängt. Zum Beispiel liefert
WriteLn(1.234:4:2);
die Ausgabe 1.23. Das Ausgabefeld ist dabei vier Zeichen breit, die Anzahl der Nachkommastellen 2.
Möchte man den gleichen Mechanismus nun nicht direkt für die Ausgabe verwenden, sondern das Ergebnis als Zeichenkette haben, so lässt sich das auch bewerkstelligen. Hierzu verwendet man die Str-Prozedur. Wenn s eine String-Variable ist, so lässt sich darin die formatierte Zahl so abspeichern:
Str(1.234:4:2, s);
WriteLn(1.234:4:2);
die Ausgabe 1.23. Das Ausgabefeld ist dabei vier Zeichen breit, die Anzahl der Nachkommastellen 2.
Möchte man den gleichen Mechanismus nun nicht direkt für die Ausgabe verwenden, sondern das Ergebnis als Zeichenkette haben, so lässt sich das auch bewerkstelligen. Hierzu verwendet man die Str-Prozedur. Wenn s eine String-Variable ist, so lässt sich darin die formatierte Zahl so abspeichern:
Str(1.234:4:2, s);
Samstag, 13. November 2010
MD5-Summen in Free Pascal
Free Pascal bringt eine Bibliothek mit, die das Erstellen von MD5-Summen sehr einfach macht. Man bindet die Unit MD5 ein und kann dann folgendes schreiben:
s := MD5Print(MD5String('Hallo, Welt!'));
s ist dabei ein String. MD5String erzeugt aus einem Eingabe-String (hier »Hallo, Welt!«) einen Wert vom Typ TMD5Digest. Dieser wird dann von MD5Print in den Ausgabe-String umgewandelt. Möchte man die MD5-Summe über eine ganze Datei bilden, so steht statt MD5String auch MD5File zur Verfügung.
s := MD5Print(MD5String('Hallo, Welt!'));
s ist dabei ein String. MD5String erzeugt aus einem Eingabe-String (hier »Hallo, Welt!«) einen Wert vom Typ TMD5Digest. Dieser wird dann von MD5Print in den Ausgabe-String umgewandelt. Möchte man die MD5-Summe über eine ganze Datei bilden, so steht statt MD5String auch MD5File zur Verfügung.
Samstag, 30. Oktober 2010
Viele Fenster in der Lazarus-IDE
Unter Ubuntu (und vermutlich auch anderen Linux-Distributionen) öffnet Lazarus viele eigenständige Fenster. Jedes hat einen Eintrag in der Leiste am unteren Bildschirmrand, das die laufenden Applikationen listet. Da kann es dann schon mal eng werden. Abhilfe schafft es hier, Lazarus einfach auf einer eigenen Arbeitsfläche (Desktop) zu starten. Standardmäßig öffnet Ubuntu ja gleich zwei davon – einen, auf dem ich normalerweise arbeite, und einen zweiten, den ich für Lazarus nutzen kann.
Abonnieren
Posts (Atom)