Hilfsmittel zum Programmieren

Mehrsprachigkeit Programminstallation Software-Verteilung Delphi-Hilfsmittel
Mc-Tools CAN-Bus-Monitor T89C51CC01-Programmierung

Mehrsprachige Delphi-Anwendungen mit GNU Gettext

Es gibt verschiedene Möglichkeiten, eine Delphi-Anwendung mit einer mehrsprachigen Oberfläche zu versehen. Auch die Original-Entwicklungsumgebung bringt hierfür Werkzeuge mit. Bei der Benutzung zeigen sich diese aber etwas schwerfällig in der Anwendung.
Ich habe daher alle meine mehrsprachigen Programme auf das als OpenSource bereitgestellte System GNU Gettext for Delphi von Lars B. Dybdahl umgestellt. Nach kurzer Eingewöhnung kann man damit sehr effizient arbeiten. Außerdem bietet es den großen Vorteil, dass für die Erstellung einer Übersetzung keine Delphi-Entwicklungsumgebung bereitstehen muss. Es genügt ein einfacher Texteditor oder besser eines der folgenden speziell dafür entwickelten Editor-Programme:

Basís ist immer eine vorzugsweise in englisch geschriebene Delphi-Anwendung. Weitere Informationen findet man unter Personal Backup - Übersetzungen.

Die Übersetzung wird immer in zwei Schritten erstellt:

  1. Erstellung einer Text-Datei mit den englischen Redewendungen als Schablone für die Übersetzung.
  2. Zusammenführen einer vorhandenen Übersetzung mit der aktualisierten Schablone

Bereits übersetzte Teile werden dadurch bei Programmaktualisierungen immer automatisch übernommen, so dass der Aufwand für die Aktualisierung der Übersetzung klein bleibt.
Die beiden erforderlichen Programme werden im Windows-Explorer über das Kontext-Menü aufgerufen:

1. Rechtsklick auf ein Verzeichnis   2. Rechtsklick auf eine po-Datei.
erzeugt die Schablone (po-Datei).   führt Schablone und Übersetzung zusammen und startet PoEdit für die Nachbearbeitung.

Das Programm für die Schablonenerstellung (ggdxgettext.exe) habe ich etwas erweitert, um den Namen der Textdomäne direkt frei wählen zu können (Standardname: default). Außerdem wurde ein Fehler beseitigt, den ich erstmals unter Windows 7 festgestellt habe: Die Po-Datei wurde nicht in das per Rechtsklick ausgewählte Verzeichnis geschreiben, sondern eine Ebene höher.
Auch für das Programm zur Zusammenführung von vorhandener Übersetzung mit der aktualisierten Schablone (ggmerge.exe) und die Übersetzungen der Kontextmenüs gibt es kleine Ergänzungen.

Neue Bedieneroberfläche GgtTranslate

Zum sporadischen Bearbeiten einzelner Übersetzungen ist die Integration in Form der Kontext-Menüs sicher ganz praktisch. Beim Erstellen eines mehrprachigen Programms (z.B. in englisch und deutsch), wobei die Texte noch laufend angepasst werden müssen, wird die Bedienung auf diese Weise allerdings doch etwas mühsam. Man muss ständig die Verzeichnisse wechseln und erreicht sein Ziel erst nach diversen Mausklicks. Abhilfe schafft hier mein Programm GgtTranslate, das alle Schritte unter einer Bedieneroberfläche zusammenfasst. Es benutzt dabei die gleichen Einstellungen (dxgettext.ini) wie die Originalprogramme, erlaubt es aber, alle Schritte unmittelbar nacheinander auszuführen:

  1. Extrahieren der Strings in der Originalsprache (i.d.R. englisch) aus den Quelltexten (pas- und dfm-Dateien) in die Übersetzungsschablone.
  2. Zusammenführen dieser Schablone mit den Übersetzungen
  3. Bearbeiten von ignore.po mit einem Texteditor
  4. Bearbeiten der Übersetzung, z.B. mit PoEdit
  5. Kopieren der erzeugten MO-Datei in das zugehörige Sprachverzeichnis: z.B. <Verzeichnis der ausführbaren Datei>\de\LC_MESSAGES\
  6. Einbetten der Übersetzungen in die ausführbare Dateien

Das Program und alle oben beschrieben Erweiterungen sind als installierbares Updatepaket verfügbar:

Downloads:

Zur Verwendung muss zunächst das Komplettpaket für GNU gettext for Delphi installiert werden. Das Update kann anschließend einfach darüber installiert werden.



Hilfsmittel zur Erzeugung von Installationsarchiven

Um dem Anwender die Installation eines neuen Programms möglichst einfach zu machen, wird dies am Besten mit allen seinen Komponenten in ein platzsparendes Archiv gepackt. Dadurch wird ein schnelles Download gewährleistet. Um auch die Installation komfortabel zu gestalten, sollte dieses Archiv selbstextrahierend sein, damit kein Zusatzprogramm zum Entpacken nötig ist. Wichtig ist auch, dass während der Installation individuelle Einstellungen (wie. z.B. das Programmverzeichnis oder Einträge im Startmenü oder auf dem Desktop) vom Benutzer vorgenommen werden können.

Verwendung von Inno-Setup

Neben kommerziellen Programmen wie z.B. InstallShield oder Wyse hat sich hierfür das Freeware-Programm Inno-Setup bewährt. Durch eine sehr leistungsfähige Skript-Sprache können hiermit fast alle Anforderungen erfüllt werden.

1. Beispiel - Installation von HtRed

Beschreibung der einzelnen Abschnitte:
Setup
Hier findet man die globalen Einstellungen, wie Name der Anwendung, Autor, Name der Installations-Datei
Languages
Hier wird angegeben, welche Sprachen bei der Installation ausgewählt werden können
CustomMessages
Individuelle Installationshinweise in den verwendeten Sprachen
Tasks
Zusätzliche Aufgaben bei der Installation, wie z.B. Anlegen eines Desktop-Icons oder Einstelllen von Verknüpfungen zu best. Dateitypen
Registry
In die Registry einzutragende Werte, wobei hier der Name des Schlüssels durch eine unter Code eingefügte Funktion in Pascal-artiger Syntax ermittelt wird.
Files
Für die Installation benötigte Dateien.
Icons
Einträge im Startmenü und auf dem Desktop.
Run
Nach der Installation zu startendes Programm.
Code
Zusätzliche Benutzerfunktionen.

2. Beispiel - Installation zur Nutzung eines serverseitig installierten MikTeX

Beschreibung der Verfahrensweise:

  1. In dem Beispiel wird davon ausgegangen, dass auf einem Server das vollständige MikTeX installiert ist. Die Serverfreigabe ist auf dem lokalen Rechner als Netzlaufwerk P: angebunden. Auf der gleichen Serverfreiggabe befindet sich auch eine GhostScript-/GhostView-Installation.
  2. Auf dem lokalen Rechner wird von einem Administrator die mit dem o.g. Inno-Setup-Skript erzeugte Installation Admin-MiKTeX-From-Server-Setup.exe gestartet. Sie nimmt alle erforderlichen Einstellungen in der Registry, der Programm-Umgebung und im Startmenü (All users) vor.
  3. Der Administrator installiert einen Editor, wie. z.B. TeXnicCenter.
  4. Der jeweilige Benutzer muss nach der Anmeldung im Startmenü das Programm MikTeX > Settings starten und die erforderlichen lokalen Datenbanken erzeugen: Schaltflächen Refresh FNDB und Update Formats.

Einfügen einer Versionsinfo in den Namen der Installationsdatei

Bei Programmen, die sich noch in der Weiterentwicklung befinden, ist es nützlich, aus dem Dateinamen der Installationsdatei die Versionsnummer zu erkennen. Mit einiger Kenntnis der in InnoSetup verwendeten Scriptsprache kann man das in das Installationsskript integrieren. Wem das zu kompliziert ist, der kann auf das nachfolgend beschriebene kleine Delphi-Befehlszeilenprogramm zurückgreifen. Es lässt sich sehr einfach in eine Batch-Datei integrieren.

Batch-Datei zur Erzeugung des Installationsarchivs:

rem InnoSetup starten
"%ProgramFiles%\Inno Setup 5\Compil32.exe" /cc htred.iss
rem Versionsinfo in Dateinamen einfügen
\Delphi7\bin\AddVersionToName.exe "\Delphi7\Bin\html\HtRed.exe" htred-setup.exe 3

Das Programm AddVersionToName benötigt folgende Angaben in der Befehlszeile:

AddVersionToName <ExeFile> <InstallFile> [<Level>]

Es liest dann aus der Exe-Datei die Versionsnummer aus (siehe z.B. Projekt-Eigenschaften bei Delphi) und benennt die Installations-Datei entsprechend um.

Ein zweites Programm CopyVersionFile kopiert zusätzlich zur Umbenennung die Datei in ein oder mehrere Verzeichnisse für die Softwareverteilung.

Download der Programme (Quelltexte und Exe-Dateien) (57,2 kB)

Eine Weiterentwicklung dieser beiden kleinen Programm wird im nächsten Abschnitt beschrieben.


Verteilung von Softwarepaketen

Die Erstellung und Verteilung von Softwarepaketen erfordert immer wieder die gleiche Abfolge von Operationen, so dass sich eine Automatisierung anbietet:

  1. Integration der Sprachpakete nach einer Neu-Compilierung
  2. Erstellen der Installationsdatei mit InnoSetup (s.o.)
  3. Einfügen der Versionsnummer in den Namen der Installationsdatei
  4. Kopieren der Installationsdatei und ev. weiterer Dateien auf den Download-Server
  5. Anpassen der Download-Webseite

Beispiel einer Batch-Datei für einen automatisischen Ablauf der Schritte 1 - 3:

echo Sprachdateien aktualisieren
copy /y ..\languages\de\default.mo \Delphi2009\bin\Pb51\locale\de\LC_MESSAGES\
rem copy /y ... für weitere Sprachpakete

echo.
echo InnoSetup starten
"%ProgramFiles%\Inno Setup 5\Compil32.exe" /cc pb51.iss
echo InnoSetup fertig

rem Archiv für Update aktualisieren
"%ProgramFiles%\7-Zip\7z.exe" u -r pb-update-5.zip @pb-files.txt

rem Setup versionieren und verteilen
"E:\Delphi2009\Bin\Ftp\VersionCopy.exe" "E:\Delphi2009\Projekte\Backup51\Distribution\PersBackup-5.vcj" /f

Die Schritte 3 - 5 werden dabei von dem Programm VersionCopy ausgeführt.


VersionCopy

Die Funktionen im Überblick:

Verfahrensweise:

Zunächst werden im interaktiven Modus mit dem Program geeignete Aufträge erstellt und gespeichert.
Mit der Schaltfläche "Testen" kann die Funktionsweise geprüft werden, ohne dass irgendwelche Daten tatsächlich verändert oder kopiert werden. Der Ablauf wird im Status-Fenster angezeigt und gleichzeitig auch in eine Protokolldatei geschrieben ("VersionCopy.log" im Verzeichnis "Anwendungsdaten").
Wenn alles richtig aussieht, kann durch Klick auf die Taste "Starte Kopieren" der Auftrag real ausgeführt werden.
Aufruf über die Befehlszeile:
Der Kopiervorgang kann auch direkt über die Befehlszeile gestartet werden (siehe auch die Batch-Datei weiter oben):
<Pfad>\VersionCopy.exe <Auftrag> /force

Download des Programme als Zip-Datei (822 kB)


Grund-Einstellungen

Exe-Datei mit Versionsinfo:
Dies kann eine mit einer beliebigen Programmentwicklungsumgebung erstellte Datei sein. Sie muss die üblichen Versionsinformationen in ihrern Ressourcen enthalten (unter Delphi wird das über die Projektoptionen eingestellt).
Setup-Datei:
Dies ist das mit einem Installer (z.B. Inno-Setup) erstellte Installationspaket, das zum Download bereitgestellt werden soll.
Benutzte Versionsebene:
Hier wird eingestellt, wie die Versionsinformation weiter gegeben werden soll. Es sind maximal 4 Stufen möglich: Setup-1, Setup-1.2, Setup1.2.03 oder Setup-1.2.0304
Vorversion behalten:
Hier wird eingestellt, welche im Downloadbereich befindlichen älteren Versionen gelöscht werden sollen. Wird z.B. Ebene 1 gewählt, werden Setup-Dateien nur dann erhalten wenn sich die erste Versionstufe ändert (setup-1... auf setup-2..).
Projekt-Präfix:
Hier wird die Projektkennzeichnung für die Bearbeitung der HTML-Vorlagen eingestellt (siehe).

FTP-Einstellungen

Hier werden die Zugangsdaten für die verwendeten FTP-Server eingestellt.

Dateien

Versionsinfo-Datei:
Name der Datei, die die Informationen zur aktuellen Version bereitstellt (siehe unten)
Setup-Datei:
Setup mit Versionsnummer (wird vom Programm erzeugt)
Erstelle Datei mit MD5-Checksumme:
Auswählen, wenn der MD5-Wert in eine Datei "<Setupname>.txt" geschrieben werden soll
Zusätzliche Dateien:
Hier können beliebige Dateien, z.B. mit Update-Informationen ausgewählt werden, die zum Downlaod bereitgestellt werden sollen. Auf Wunsch kann den Dateien automatisch das Projekt-Präfix vorangestellt werden.

Ziele

Verzeichnisse:
Hier können beliebige Verzeichnisse im Windows-Dateisystem ausgewählt werden, in die die oben genannten Dateien und das Setup kopiert werden sollen. Die Versionsinformation wird nur in die markierten Verzeichnisse kopiert.
Ziele auf FTP-Server
Hier können beliebige Verzeichnisse auf den oben festgelegten FTP-Servern ausgewählt werden, in die die Dateien und das Setup kopiert werden sollen. Die Versionsinformation wird nur in die markierten Verzeichnisse kopiert.

HTML-Seiten

Es werden die weiter unten beschrieben HTML-Vorlagen ausgewählt, die vom vom Programm aktualisiert und per FTP in die ausgewählten Verzeichnisse kopiert werden.


Erforderliche Vorlagen

  1. Vorlage für die auf dem Webserver bereitgehaltene Versionsinfo für die automatische Prüfung auf Updates.
  2. Vorlage für die Download-Webseite, die vom Programm automatich aktualisiert wird.

Vorlage für Versionsinfo

Dabei handelt es sich um eine kleine Textdatei mit 3 Zeilen:

1. Zeile: <Platzhalter für Version>
2. Zeile: <URL-Pfad für Download>
3. Zeile: <Platzhalter für Setup-Datei>

Fest vorgeben muss man nur die 2. Zeile mit dem Downloadpfad, die anderen beiden Zeilen werden vom Programm eingefügt.
Beispiel:

5.1.0.4
http://www.ieap.uni-kiel.de/surface/ag-berndt/download/utilities/
pb-setup-5.1.0004.exe

Vorlage für die Download-Webseite

Es handelt sich dabei um eine gewöhnliche HTML-Seite mit einigen speziellen Erweiterungen und Platzhaltern. Diese werden benötigt, damit das Programm VersionCopy an den gewünschten Stellen die aktuellen Informationen einsetzen kann.
Formateinstellungen:
format-date   = <mode>   0 - internationales Datumsformat
1 - deutsches Datumsformat
2 - englisches Datumsformat
decimal-sep   = <char>   Standardmäßig wird als Dezimaltrenner für die Größenangabe (s.u.) der Punkt
verwendet. Mit <char> = , wird das auf das Komma umgestellt.
Platzhalter:
Ein Platzhalter hat die Form [%<pf>-<name>] und kann an beliebiger Stelle im HTML-Text eingefügt werden. Er wird durch den Wert ersetzt, der ihm im Header zugewiesen ist.

pf   Projekt-Präfix (2 Buchstaben, in Versioncopy einstellbar)
name = version
= date
= setup
= size
= md5
Versionsnummer (z.B. 5.1.3)
Datum der zur Bereitstellung (z.B. 12.10.2010)
Name der Download-Datei (z.B. program-5.1.3.exe)
Größe der Download-Datei (z.B. 4,71 MB)
MD5-Wert der Download-Datei (z.B. 4981dd3...)
Header:

Der HTML-Datei wird ein Header vorangestellt, der die Informationen für alle Platzhalter enthält:

<!-- #var
<pf>-<name> = <wert>
...
-->

VersionCopy passt die Werte im Header, die zu dem Projekt-Präfix passen, automatisch an und ersetzt anschließend die Platzhalter im Text durch die aktuellen Werte.

Beispiel:

Hilfsprogramme für die Bearbeitung von Delphi-Ressourcen

GlyphViewer

Zur Beschriftung der Buttons und Menüs in Delphi benötigt man kleine Symbolbildchen (Glyphs) in einer Größe von meisten 16x16. Einige werden mit Delphi zusammen ausgeliefert, andere findet man im Internet. Es ist aber auch nicht schwer sich selbst solche Bildchen neu zu erstellen oder aus vorhanden abzuleiten. Mit der Zeit wird die Sammlung immer größer und unübersichtlicher.
Das Programm GlyphViewer hilft, hier die Übersicht zu behalten. Es stellt alle Bilder innerhalb eines Verzeichnisses als Buttons dar. Man kann dabei die Effekte (Disabled oder gedrückt) prüfen und das benötigte Bild über die Zwischenablage in die Delphi-Entwicklungsumgebung kopieren.


Entwicklungsumgebung für Mikrocontroller der 51er-Serie

MC-51 ist eine unter Windows laufende Entwicklungsumgebung für Mikrocontroller der 8051-Familie (Siemens, Philips, Atmel, etc.). Die aktuelle Version 5.2 enthält

Das Programm steht in den Sprachen deutsch und englisch zur Verfügung und kann unter Windows 2000/XP, Windows Vista und Windows 7 (32- und 64-Bit) verwendet werden.

Downloads:

Installationspaket für Vers. 5.3 mit Turbo-51 und ASEM-51(1,70 MB)
Turbo-51 von Igor Funa ASEM-51 von W.W. Heinz

Weitere Informationen, Programmbeispiele und Anleitungen für den Aufbaue eines Experimentierboard mit dem Atmel-Controller AT89S8253 findet man auf einer Seite des Instituts für Experimentelle und Angewandte Physik der Uni-Kiel.


In-System-Programmierung für den Mikrocontroller Atmel T89C51CC01 über CAN-Bus

Der Atmel-T89C51xx-Controller kann mit diesem Programm über die integr. CAN-Schnittstelle programmiert werden. Es werden folgende CAN-Interfaces mit dem Controller-IC 82C200/SJA1000 unterstützt:

Die für die Ansteuerung der Parallel-Schnittstelle erforderlichen Treiber sind in dem Software-Paket enthalten. Zur Installation sind Administratorrechte erforderlich.

Download:

Vollständige Installation (940 kB)

CAN-Adapter für die Parallelschnittstelle:

Schaltplan   SMD-Layout   Eagle-Dateien


Universeller CAN-Bus-Monitor

Mit dem Programm CAN-TERM Vers. 1.23 kann der Datenverkehr auf einem CAN-Bus überwacht werden. Zum Testen können auch Daten gesendet werden. Es werden folgende CAN-Interfaces mit dem Controller-IC 82C200/SJA1000 unterstützt:

Download:

Vollständige Installation (971 kB)