Monthly Archives: June 2010

Text vs. Binary

Einer der täglichen Stolpersteine auf dem Weg zum C-Guru, hat mich gerade eine Stunde Lebenszeit gekostet. Vergleiche:

fopen( "header.bin", "wb" )

mit

fopen( "header.bin", "w" )

und dann noch den Auszug aus C in a Nutshell

The mode string may also include b as the second or third letter (that is, "ab+" for example is the same as "a+b"), which indicates a binary file, as opposed to a text file. The exact significance of this distinction depends on the given system.

»The given system« in diesem Fall Microsoft Visual C++® 6.0 unter Windows XP. Und was macht das, wenn man das b weg lässt? Es fügt vor jedes 0x0A, das man mit fwrite() in eine Datei schreibt, selbständig ein 0x0D ein, damit aus dem LF auch brav ein CRLF wird. Und ich wunder mich, warum meine Dateien größer sind, als sie sein sollten …

HowTo: Syntaxhighlighting für Graphviz in Notepad++

Für die 8 Stunden am Tag, wo ich gezwungen bin, Windows zu benutzen, ist Notepad++ der Editor meiner Wahl. Eingebaut ist Syntaxhighlighting für eine ganze Reihe von Programmiersprachen, zum Teil auch recht exotische Sachen, aber natürlich nicht alles, was irgendwie möglich ist. Ein derartiger Fall ist Graphviz, die bekannte Software zur Visualisierung von Graphen. Ich benutze das hier um Zustandsmaschinen zu visualisieren. Die Dateien schreibe ich manuell, was zwar bisschen Arbeit macht, aber Änderungen sind doch deutlich schneller einzupflegen als wenn ich das beispielsweise in Inkscape zeichnen würde.

Vor ein paar Wochen hatte ich mal unmotiviert im Netz recherchiert, wie es mit Syntaxhighlighting für Graphviz in Notepad++ aussieht, kurz und gut: schlecht. Allerdings hat der Editor eine interessante Funktion, mit der man sich schnell selbst ein rudimentäres Syntaxhighlighting zusammenklicken kann. Einfach im Menü auf Ansicht und dann Benutzerdefinierte Sprache …1 klicken. Da öffnet sich ein Fenster, wo man dann erstmal auf »Neue erstellen« klickt. Für die Einstellungen, die ich jetzt für Graphviz gemacht habe, hab ich mal ein paar Screenshots angelegt:

Auf dem vierten Screenshot sieht man bereits das Endergebnis. So ganz perfekt ist es nicht. Folding funktioniert nicht und die Marker für Kommentarblöcke müssen zwingend von Leerzeichen umschlossen sein, damit der Block erkannt wird. Ansonsten bin ich ganz zufrieden, besser als völlig ohne ist es allemal.

Wer sich das nicht selbst zusammenklicken will, kann auch die Datei userDefineLang.xml von hier laden. In dieser speichert Notepad++ diese Einstellungen nämlich und zwar unter Windows XP im Pfad C:\Dokumente und Einstellungen\adahl\Anwendungsdaten\Notepad++2

Achtung: Wenn Ihr selbst schon eigene Einstellungen für andere Sprachen definiert habt, nicht einfach überschreiben, damit die alten Sachen nicht verloren geben! Aber die Datei ist XML, da sollte man sich leicht den passenden Teil rausziehen können.

  1. bzw. View und dann User Define Dialog… []
  2. Pfad natürlich an lokale Gegebenheiten anpassen! []