Montag, 29. Juni 2009

Calc: Erkennung von Zahlen abschalten

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.

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

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.

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:


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.

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.

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.

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 \)
Die erste Option braucht vielleicht eine Erklärung. Steht die Datei test.bat im Verzeichnis C:\temp\test.bat und ist mein aktuelles Verzeichnis C:\temp, so könnte ich ja einfach test.bat eingeben, um die Datei aufzurufen. Dann würde %0 auch test.bat ergeben. Starte ich test.bat aber mit ..\temp\test.bat, so ist genau das auch der Text, den %0 liefert.

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.

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.

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

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.

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).

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.