Wenn man in OpenOffice.org Calc in eine Zelle eine Zahl eingibt, so erkennt das Programm das und nimmt die Zahl auch als Zahl entgegen und nicht etwa als irgendeinen Text. Das kann in Ausnahmefällen störend sein. Zum Beispiel, wenn man 2- oder 2+ eingeben will. Das macht Calc dann nämlich zu -2 und 2. Man kann aber das Format einer Zelle auch manuell setzen:
Format => Zellen => Zahlen
In dieser Box kann man jetzt unter »Kategorie« »Text« auswählen. Wenn man nun in die Zelle 2- oder 2+ eingibt, so bleibt dieser Text bestehen. Falls man die rechtsbündige Formatierung braucht, die man mit Zahlen normalerweise bekommt, kann man sie einer solchen Zelle immer noch manuell zuweisen.
Montag, 29. Juni 2009
Donnerstag, 18. Juni 2009
Erstellungsdatum und -zeit mit Free Pascal
Was man nicht so alles Interessantes findet, wenn man Referenzhandbücher liest! Free Pascal kann zum Beispiel Erstellungsdatum und -zeit eines Programms innerhalb des Programms zur Verfügung stellen. Zum Beispiel so:
WriteLn('Date: ', {$I %DATE%});
WriteLn('Time: ', {$I %TIME%});
Hier findet sich die Information, ebenso auch weitere Angaben, die ähnlich erreicht werden können: http://www.freepascal.org/docs-html/prog/progsu38.html#x45-430001.1.38
WriteLn('Date: ', {$I %DATE%});
WriteLn('Time: ', {$I %TIME%});
Hier findet sich die Information, ebenso auch weitere Angaben, die ähnlich erreicht werden können: http://www.freepascal.org/docs-html/prog/progsu38.html#x45-430001.1.38
Mittwoch, 17. Juni 2009
Calc: Manchmal zu hilfsbereit
In OpenOffice.org Calc werden einem bei der Eingabe in eine Zelle normalerweise Texte angezeigt, die man in der gleichen Spalte schon einmal eingegeben hat und die mit dem Text beginnen, den man bereits eingegeben hat. Das kann sehr hilfreich sein. Es kann aber auch zu einem Problem führen: Calc beachtet beim Abgleich nicht die Groß-/Kleinschreibung. Wenn man nun ein Wort bereits kleingeschrieben eingegeben hat und es in einer anderen Zelle noch einmal großgeschrieben tippt, so wird das Wort beim Verlassen der Zelle in Kleinbuchstaben umgewandelt. Hier schlägt die Eingabehilfe zu, was in diesem Fall aber eher problematisch ist.
Der Trick ist, dass man die genannte Vervollständigungsautomatik abschaltet, bevor man das großgeschriebene Wort eingibt. Dies erfolgt unter Extras => Zellinhalte => AutoEingabe. Nachdem man die Zelle fertigeditiert hat, kann man diese Automatik wieder einschalten.
Der Trick ist, dass man die genannte Vervollständigungsautomatik abschaltet, bevor man das großgeschriebene Wort eingibt. Dies erfolgt unter Extras => Zellinhalte => AutoEingabe. Nachdem man die Zelle fertigeditiert hat, kann man diese Automatik wieder einschalten.
Montag, 15. Juni 2009
GetWorksheetByName
Die TSWorkbook-Klasse gibt einem die enthaltenen Arbeitsblätter zurzeit nur per Index (TSWorkbook.GetWorksheetByIndex). Sucht man nach einem Arbeitsblatt mit einem bestimmten Namen, schreibt man sich einfach eine Funktion:
Die Funktion gibt entweder die gesuchte TSWorksheet-Instanz zurück, oder NIL, wenn kein Arbeitsblatt mit dem Namen existiert.
FUNCTION GetWorksheetByName(workbook: TSWorkbook; name: String):
TSWorksheet;
VAR
i : Integer;
worksheet: TSWorksheet;
BEGIN
result := NIL;
FOR i := 0 TO workbook.GetWorksheetCount - 1 DO BEGIN
worksheet := workbook.GetWorksheetByIndex(i);
IF worksheet.Name = name THEN BEGIN
result := worksheet;
Break;
END;
END;
END;
Die Funktion gibt entweder die gesuchte TSWorksheet-Instanz zurück, oder NIL, wenn kein Arbeitsblatt mit dem Namen existiert.
Samstag, 13. Juni 2009
Editor für Ruby
Bei Skriptsprachen mit ihren oftmals mehrdeutigen syntaktischen Konstrukten stellt sich häufig die Frage, welcher Editor denn damit klarkommt. Was Ruby angeht, habe ich da mit Geany gute Erfahrungen gemacht. Ich habe bei Geany noch keine fehlerhafte Syntaxhervorhebung gesehen und auch die Übersicht über die Klassen und Methoden in einer Datei funktioniert gut. Geany gibt es hier: http://www.geany.org/
Freitag, 12. Juni 2009
Dateilisten bei TFTPSend in Synapse
Synapse ist eine ziemlich praktische TCP/IP-Bibliothek für Free Pascal, vor allem was die Programmierung von TCP/IP-Clients angeht. Zu Synapse geht’s hier: http://synapse.ararat.cz/doku.php
Ein Verhalten der Synapse-Klasse TFTPSend, das für mich nicht gleich offensichtlich war, ist folgendes: Setzt man bei der Methode List den NameList-Parameter auf TRUE, dann wird die Eigenschaft FTPList nicht gefüllt. Woher bekommt man dann das angeforderte Verzeichnis? Lösung: Man muss auf die Eigenschaft DataStream zurückgreifen, um an die Dateiliste zu kommen.
Ein Verhalten der Synapse-Klasse TFTPSend, das für mich nicht gleich offensichtlich war, ist folgendes: Setzt man bei der Methode List den NameList-Parameter auf TRUE, dann wird die Eigenschaft FTPList nicht gefüllt. Woher bekommt man dann das angeforderte Verzeichnis? Lösung: Man muss auf die Eigenschaft DataStream zurückgreifen, um an die Dateiliste zu kommen.
Mittwoch, 10. Juni 2009
PATH, noch übersichtlicher
Manchmal hat man einen so umfangreichen PATH, dass sogar die Darstellung der Einträge als einzelne Zeilen wie vor kurzem gezeigt noch nicht übersichtlich genug ist. Aber man kann mit Ruby ja sehr geschickt in der Liste suchen und nur das anzeigen, was interessant ist. Zum Beispiel so:
ruby -e "ENV['PATH'].split(';').each { |e| puts e if e =~ /mybin/i }"
So werde nur Pfadeinträge angezeigt, die den Text »mybin« enthalten (wobei die Groß-/Kleinschreibung nicht beachtet wird). Wieder muss das obige Kommando auf einer einzigen Zeile stehen, auch wenn es hier in zwei Zeilen dargestellt wird.
ruby -e "ENV['PATH'].split(';').each { |e| puts e if e =~ /mybin/i }"
So werde nur Pfadeinträge angezeigt, die den Text »mybin« enthalten (wobei die Groß-/Kleinschreibung nicht beachtet wird). Wieder muss das obige Kommando auf einer einzigen Zeile stehen, auch wenn es hier in zwei Zeilen dargestellt wird.
Dienstag, 9. Juni 2009
OpenOffice.org: Schnelles Versenden einer PDF
Eine sehr nützliche Funktion in OpenOffice.org finde ich das Versenden des Dokuments im PDF-Format. Die Funktion befindet sich hier:
Datei => Senden => E-Mail als PDF…
Damit wird eine temporäre PDF-Datei erzeugt (für die man noch Einstellungen vornehmen kann), dann wird eine E-Mail generiert und diese PDF gleich angehängt. Alles automatisch. Man muss dann bei der E-Mail nur noch den Empfänger angeben und gegebenenfalls ein paar warme Worte dazuschreiben. Und abschicken.
Datei => Senden => E-Mail als PDF…
Damit wird eine temporäre PDF-Datei erzeugt (für die man noch Einstellungen vornehmen kann), dann wird eine E-Mail generiert und diese PDF gleich angehängt. Alles automatisch. Man muss dann bei der E-Mail nur noch den Empfänger angeben und gegebenenfalls ein paar warme Worte dazuschreiben. Und abschicken.
Montag, 8. Juni 2009
Nützliche Variablen in BAT-Dateien
Schreibt man BAT-Dateien unter Windows, so gibt es einige nützliche Variablen, die man benutzen kann:
- %0: ergibt den Namen der BAT-Datei samt Pfad, mit dem sie aufgerufen wurde
- %1: ergibt den ersten Kommandozeilenparameter
- %2: ergibt den zweiten Kommandozeilenparameter (und so weiter)
- %*: ergibt alle Kommandozeilenparameter
- %~dp0: ergibt den absoluten Pfad zu dem Verzeichnis, in dem sich die BAT-Datei befindet (mit angehängtem \)
Samstag, 6. Juni 2009
jEdit und Speicherverbrauch
Wenn man jEdit unter Windows XP und Java 6 betreibt, kann es vorkommen, dass der Speicherverbrauch sprunghaft ansteigt, nachdem der Bildschirmschoner aktiv war. Ich vermute, dass die JVM durch den Bildschirmschoner gezwungen wird, den Fensterinhalt im eigenen Speicher zu puffern. Wenn der Schirm dann eine große Auflösung hat, kommt da schon was zusammen.
Um dieses Problem zu lösen, habe ich folgende Java-Option in das Kommando aufgenommen, das jEdit startet: -Dsun.java2d.noddraw=true
Das erhöht zwar den Speicherverbrauch von Anfang an, verhindert aber die extreme Steigerung durch den Bildschirmschoner, sodass insgesamt weniger Speicher verbraucht wird.
Um dieses Problem zu lösen, habe ich folgende Java-Option in das Kommando aufgenommen, das jEdit startet: -Dsun.java2d.noddraw=true
Das erhöht zwar den Speicherverbrauch von Anfang an, verhindert aber die extreme Steigerung durch den Bildschirmschoner, sodass insgesamt weniger Speicher verbraucht wird.
Freitag, 5. Juni 2009
Hexadezimalanzeige von Dateien
Ein weiteres Beispiel, wie sich Kurzskripte auf der Kommandozeile gewinnbringend einsetzen lassen: Wir wollen eine Datei hexadezimal anzeigen lassen. Ein möglicher Aufruf des Ruby-Interpreters zu diesem Zweck sieht so aus (unter Windows):
ruby -e "File.open('blah.zip', 'rb') { |f| f.each_byte { |b| printf '%02X ', b } }"
Hier wird die Datei blah.zip angezeigt.
Anmerkung: Auch wenn die Darstellung oben zwei Zeilen anzeigt, so gehört doch alles in eine Zeile.
ruby -e "File.open('blah.zip', 'rb') { |f| f.each_byte { |b| printf '%02X ', b } }"
Hier wird die Datei blah.zip angezeigt.
Anmerkung: Auch wenn die Darstellung oben zwei Zeilen anzeigt, so gehört doch alles in eine Zeile.
Donnerstag, 4. Juni 2009
FPSpreadsheet aktualisiert
FPSpreadsheet ist eine wirklich nützliche Bibliothek für Free Pascal, wenn man vor der Aufgabe steht, einfache ODS- oder XLS-Dateien erzeugen zu müssen. Und das Beste ist: FPSpreadsheet wird aktiv weiterentwickelt! Vor knapp zwei Tagen gab es die letzte Aktualisierung (einige Ergänzungen für das Excel-5-Format waren das in dem Fall).
Hier gibt’s weitere Informationen: http://wiki.lazarus.freepascal.org/FPSpreadsheet
Hier gibt’s weitere Informationen: http://wiki.lazarus.freepascal.org/FPSpreadsheet
Mittwoch, 3. Juni 2009
Übersichtliche PATH-Anzeige unter Windows
In einer Windows-Kommandozeile ist die Anzeige der Umgebungsvariable PATH sehr unübersichtlich. Um hier mehr Durchblick reinzubringen, kann man den Umstand ausnutzen, dass man in vielen Skriptsprachen kleine Progrämmchen direkt über die Kommandozeile eingeben kann. Für Ruby sieht das zum Beispiel so aus:
ruby -e "puts ENV['PATH'].split(';')"
Dieses Skript holt sich den Inhalt der PATH-Variable und trennt ihn auf, mit dem Semikolon als Trennzeichen. Das resultierende Feld wird dann einfach ausgegeben, wobei jedes Element auf eine neue Zeile geschrieben wird (so arbeitet puts, wenn es ein Feld auszugeben hat). Es kommt also jedes Element der PATH-Variable auf eine eigene Zeile, was der Übersichtlichkeit sehr hilft.
ruby -e "puts ENV['PATH'].split(';')"
Dieses Skript holt sich den Inhalt der PATH-Variable und trennt ihn auf, mit dem Semikolon als Trennzeichen. Das resultierende Feld wird dann einfach ausgegeben, wobei jedes Element auf eine neue Zeile geschrieben wird (so arbeitet puts, wenn es ein Feld auszugeben hat). Es kommt also jedes Element der PATH-Variable auf eine eigene Zeile, was der Übersichtlichkeit sehr hilft.
Dienstag, 2. Juni 2009
Startschwierigkeiten, Teil 2
Rails 2.3.2 benutzt SQLite 3 als Standarddatenbank. Was man wissen muss: Die Ruby-Anbindung für SQLite 3 muss installiert sein, damit Rails eine Anfrage verarbeiten kann, selbst wenn die angesprochene Rails-Anwendung keine Datenbank nutzt.
Nun war auf meinem Ubuntu zwar SQLite 3 installiert, nicht aber die Ruby-Anbindung. Welches Paket war nun vonnöten? Es stellte sich heraus, dass dieses Paket gebraucht wurde: libsqlite3-ruby (kann per Synaptic installiert werden).
Nun war auf meinem Ubuntu zwar SQLite 3 installiert, nicht aber die Ruby-Anbindung. Welches Paket war nun vonnöten? Es stellte sich heraus, dass dieses Paket gebraucht wurde: libsqlite3-ruby (kann per Synaptic installiert werden).
Montag, 1. Juni 2009
Startschwierigkeiten mit Rails auf Ubuntu
Vor kurzem habe ich auf meinem Ubuntu Jaunty Jackalope Rails installiert. Ich habe dabei den Weg über rubygems beschritten, also einfach ein
gem install rails
abgesetzt. Die Installation klappte auch vorzüglich, nur war hinterher das rails-Kommando nicht verfügbar (also nicht in den Suchpfad eingebunden). Ich habe dann ein bisschen gesucht und es dann in diesem Verzeichnis gefunden: /var/lib/gems/1.8/bin. Aus diesem Verzeichnis lässt es sich dann auch aufrufen.
Den entscheidenden Hinweis brachte dabei folgendes Kommando:
gem environment
Das zeigt nämlich unter anderem das Standardinstallationsverzeichnis für Gems an.
gem install rails
abgesetzt. Die Installation klappte auch vorzüglich, nur war hinterher das rails-Kommando nicht verfügbar (also nicht in den Suchpfad eingebunden). Ich habe dann ein bisschen gesucht und es dann in diesem Verzeichnis gefunden: /var/lib/gems/1.8/bin. Aus diesem Verzeichnis lässt es sich dann auch aufrufen.
Den entscheidenden Hinweis brachte dabei folgendes Kommando:
gem environment
Das zeigt nämlich unter anderem das Standardinstallationsverzeichnis für Gems an.
Abonnieren
Posts (Atom)