Zum Artikel
V.O.I.C.E Virtual OS/2 International Consumer Education
Februar 2006
A A A
Artikel

- Christian Hennecke: Neues aus der Schneiderwerkstatt
- Jeroen Besse: Eine neue Zukunft für eComStation
- Niels Jensen: Warpstock Europa 2005 in Dresden - eAMPT - Installation eines CMS unter eComStation mit einem Klick!
- Chuck Pettus: Warpstock 2005 - Eindrücke eines Außenseiters
- Keith Merrington: SigmaMD5 - Ein Dienstprogramm zum Prüfen von message digests
- Arthur van Egmond: Erstellung einer Datenbank mit Lotus Smartsuite
- Robert Henschel: Es ist Zeit, über die Warpstock Europe 2006 nachzudenken!
- Tips
- Leserbriefe, Addenda, Errata

Aktives GUI-Element

Statisches GUI-Element

Quelltext

WPS-Objekt

Datei/Pfad

Befehlszeile

Inhalt Eingabefeld

`[Tastenkombination]`

mehr

# SigmaMD5
Ein Dienstprogramm zum Prüfen von message digests

von Keith Merrington, © Februar 2006

## Vorbemerkung

Grund für die Entwicklung dieses Programms war, daß ich Schwierigkeiten bei der Installation von eComStation hatte und eine Möglichkeit benötigte, die Datenintegrität der CDs zu überprüfen. Ich hatte die elektronisch gelieferte Version von eComStation erworben und von den beiden ISO-Abbildern CDs erstellt, aber die Installation funktionierte nicht!

Es begann der übliche Vorgang zum Ausschließen von Ursachen, wobei es zuerst galt, die Datenintegrität und Korrektheit der Start-CD zu überprüfen. Die beiden ISO-Abbilddateien hatte ich problemlos entpacken können, aber bezüglich der Start-CD war ich mir nicht sicher. Auf der CD fiel mir eine Datei namens MD5SUM.TXT auf. Darin waren MD5-Prüfsummen für sämtliche Dateien angegeben. Ich fand ein Programm namens md5sum, welches Prüfsummen für einzelne Dateien erstellt, aber dies für jede einzelne Datei auf der CD durchzuführen, schien mir wenig attraktiv. Daher schaute ich mich nach anderen Programmen um, die mehrere Dateien verarbeiten konnten. Eine kurze Suche bei Hobbes brachte leider nicht das gewünschte Ergebnis, auch wenn mehrere MD5-Prüfprogramme erhältlich waren.

Eine ausgeweitete Suche lieferte den Treffer MD5summer, aber dabei handelte es sich um ein Windows-Programm. Nichtsdestotrotz konnte ich damit eine Überprüfung meiner Start-CD durchführen, die ergab, daß eine Reihe von Dateien defekt waren. Bei der Rücksprache mit Mensys stellte sich jedoch heraus, daß die Dateien korrekt und einige Prüfsummen fehlerhaft waren!

Der Grund für die fehlgeschlagende Installation war übrigens ein etwas überempfindliches CD-Laufwerk.

Da ich kein Windows-Fan bin, mir aber die Funktionsweise von md5summer gefiel, kam mir in den Sinn, ein PM-Programm mit einer ähnlichen Oberfläche zu schreiben.

Ich sollte erwähnen, daß ich, auch wenn ich vor vielen Jahren zu der Zeit, als Merlin herausgebracht wurde, Visual Age C++ 3.0 gekauft hatte, kein einziges OS/2-Programm entwickelt hatte. Meine Programmiererfahrungen mit C beschränkten sich auf wenige Beispielprogramme aus der Zeit der 70er Jahre, als ich mich mit UNIX befaßt hatte. Beim Einstieg half mir das Buch OS/2 Presentation Manager Programming von Charles Petzold, das ich zur selben Zeit wie Visual Age gekauft hatte. Wer sich einmal an der Programmierung für PM versuchen will, dem kann ich Petzolds meiner Meinung nach exzellentes Buch für den Einstieg sehr empfehlen.

Md5summer als Vorlage vereinfachte das grundlegende Design. Mein Ziel war es, eine Datei mit einer Liste von Dateien und den zugehörigen MD5-Prüfsummen (wie z.B. MD5SUM.TXT) einzulesen und schnell festzustellen, ob diese korrekt waren. Ich werde Sie nicht mit all den Programmierfehlern langweilen, die ich gemacht habe, bevor ich schließlich etwas in den Händen hatte, mit dem ich meine CD unter OS/2 prüfen konnte.

## MD5

(Siehe http://www.ietf.org/rfc/rfc1321.txt.)

Während meiner Suche nach einem Algorithmus für MD5 fand ich heraus, daß es mindestens zwei Vorgänger namens MD2 und MD4 gegeben hatte. Ich habe keine Ahnung, ob es jemals MD1 oder MD3 gab, auch wenn es Metadata3 gibt, das manchmal MD3 genannt wird. Wie bei allen Prüfsummen, CRCs usw., so handelt es sich auch beim MD5-Algorithmus um nichts anderes als eine arithmetische Umformung von Eingabedaten, die diese auf einen Wert reduziert. CRCs sind typischerweise 16 oder 32 Bit lang, MD4 und MD5 aber 128 Bit. Die Umformung wird auf eine Nachricht (message) beliebiger Länge angewendet und liefert eine 128-Bit-Prüfsumme oder auch Kurzfassung (digest). Daher der Name message digest und die Abkürzung MD. Die Methode zur Erstellung dieses message digest wurde von Professor Ronald L. Rivest vom MIT entwickelt, wie auch die Versionen MD2 und MD4. Zwar ähneln sich die Algorithmen zu einem gewissen Grad, jedoch unterscheidet sich das Design von MD2 wesentlich von dem der Versionen MD4 und MD5, da es für 8-Bit-Rechner optimiert war. MD4 und MD5 wurden auf 32-Bit-Rechner ausgelegt. MD5 wurde zur Behebung einiger bei MD4 entdeckter Schwächen entwickelt, d.h. es bietet eine höhere Prüfsicherheit bei geringerer Wahrscheinlichkeit fehlerhafter Ergebnisse. Insgesamt stellt MD5 ein sehr sicheres Verfahren zur Überprüfung der Datenintegrität dar und ist verläßlicher als andere gemeinhin eingesetzten Methoden.

## Das Programm

Die aktuelle Version 1.02 meines Programms ist als komprimiertes Archiv SigmaMD5-1-2.zip von fünf Dateien erhältlich:

readme.txt
  Datei mit allgemeinen Informationen
SigmaMD5.exe
  ausführbare Programmdatei
SigmaMD5.hlp
  Hilfedatei
SigmaMD5.dll
  eine DLL mit ausführbarem Code zur Verarbeitung großer Dateien
SigmaMD5.MD5
  die Datei mit den MD5-Prüfsummen obiger Dateien

### Installation

Da ich meine Aufmerksamkeit ganz dem Programm an sich widmen wollte, habe ich weder ein Installationsskript noch ein Installationsprogramm geschrieben. Die ZIP-Datei muß nur in ein Verzeichnis entpackt werden, vorzugsweise eines, welches sich in der Anweisung `PATH` in der CONFIG.SYS befindet. Die Hilfedatei kann in ein Verzeichnis verschoben werden, das in der Anweisung `HELP` aufgeführt wird, genauso, wie die DLL in ein Verzeichnis der Anweisung `LIBPATH` verschoben werden kann (ein Vorschlag eines Anwenders). Zur Vereinfachung der Bedienung empfiehlt es sich, Dateien mit der Endung .MD5 mit SigmaMD5 zu verknüpfen. Ordnet man die Dateien auch dem Editor E oder einem anderer Editor seiner Wahl zu, läßt sich nach einem Klick mit der rechten Maustaste auf ein Dateiobjekt eines der beiden Programme über den Menüeintrag Öffnen auswählen. Am einfachsten läßt sich diese Zuordnung mit Assoedit von Henk Kelder bewerkstelligen. Wählen Sie darin Associations > Associations by file filter. Fügen Sie zuerst den Filter *.MD5 hinzu, und rufen Sie dann mit Hilfe der Schaltfläche Add den Zuordnungsdialog auf und geben den Pfad zu SigmaMD5.exe ein. Wiederholen Sie dies für den Editor.

### Technische Daten

Die aktuelle Version ist 1.02. Die erste bei Hobbes allgemein erhältliche Version war 0.73, und eine Sonderversion 0.902 wurde mit eComStation 1.2 Media Refresh ausgeliefert. Die aktuelle Version unterscheidet sich von den früheren durch die Unterstützung großer Dateien und Dateifilter. Sie hat folgende technische Daten:

- Erzeugt und prüft 128-Bit-MD5-Prüfsummen unter Verwendung mehrerer Threads.

- Kann Dateien von bis zu 2 GB auf FAT32 und HPFS sowie 2 TB auf JFS verarbeiten.

- Ein einer Stapeldatei dürfen sich maximal 32.768 Dateien befinden.

- Funktioniert unter OS/2 Warp 4, eCS 1.0, 1.1 und 1.2. (Weitere Versionen funktionieren wahrscheinlich ebenfalls, wurden aber nicht getestet.)

Der Speicherverbrauch liegt bei 1 MB zuzüglich der Größe der zu lesenden/schreibenden Listendatei, da diese direkt in den Speicher geladen wird.

### Funktion

Dieses Programm dient hauptsächlich zu zwei Zwecken: erstens der Prüfung, und zweitens der Erzeugung von MD5-Prüfsummen unter Verwendung einer Datei, die eine Liste mit Namen der Dateien und der zugehörigen Prüfsummen enthält. Das Format dieser "Listen"-Datei ist standardisiert und mit der Ausgabe des LINUX-Programms GNU MD5Sum kompatibel. In dieser Datei können zwei Arten von Zeilen vorkommen: Kommentare und MD5-Prüfsummen. Ein Kommentar beginnt mit einem Gatterzeichen (#), gefolgt von dem Kommentar, oder ist leer. Eine Prüfsummenzeile beginnt mit der 128-Bit-MD5-Prüfsumme als 32 Zeichen lange Zeichenkette ab Spalte eins. Nach der Prüfsumme folgen ein Leerzeichen und ein Stern (*). Auf den Stern folgt der Pfad der Datei, aus der die Prüfsumme generiert wurde. Da Linux als Pfadtrenner nach rechts geneigte Schrägstriche (slashes) verwendet, wandele ich diese intern um und zeige sie in meinem Programm als nach links geneigte Schrägstriche (backslashes) an. Aus Kompatibilitätsgründen werden sie beim Schreiben der MD5-Listendatei jedoch wieder in slashes umgewandelt. Als Dateiendung einer Listendatei wird im allgemeinen .txt oder .md5 verwendet. Mein Programm schreibt diese Dateien stets mit der Endung .MD5.

### Prüfen

Die einfachste Methode zum Prüfen einer Datei oder Liste von Dateien ist ein Doppelklick auf eine entsprechende MD5-Datei - vorausgesetzt, daß der Dateityp SigmaMD5 zugeordnet wurde. Um festzustellen, ob das Programm ordnungsgemäß funktioniert, doppelklicken Sie am besten auf SigmaMD5.MD5. SigmaMD5 wird sofort geladen und der Inhalt der MD5-Datei über einen separaten Thread in den Speicher gelesen. Die ersten Zeilen werden - ohne Kommentare - im Listenbereich des Fensters angezeigt. Die Zeilen sind folgendermaßen aufgebaut: eine LED, dann der Pfad der zu verarbeitenden Datei und schließlich die MD5-Prüfsumme. Die LEDs können weiß, gelb, grün oder rot sein, was jeweils dem Status Verarbeitung noch nicht erfolgt, Verarbeitung läuft, Verarbeitung mit korrekter Prüfsumme abgeschlossen und Verarbeitung mit Prüfsummen oder Dateifehler abgeschlossen entspricht.

Abb. 1: Hauptfenster

Die Prüfsumme jeder Datei wird umgehend errechnet und mit der Prüfsumme in der Listendatei verglichen. Bei Übereinstimmung wird die LED in der jeweiligen Zeile auf grün gesetzt, ansonsten auf rot. Während eine Datei verarbeitet wird, werden Dateiname, Pfad und Größe im Statusbereich angezeigt, ebenso die Anzahl bisher verarbeiteten Dateien und die Gesamtanzahl der zu verarbeitenden Dateien. Diese Informationen werden mittels zweier Fortschrittsanzeigen dargestellt, die sowohl den Status der aktuellen Datei sowie des gesamten Prüflaufes anzeigen. Ich habe versucht, eine wahrheitsgemäße Anzeige des Status des gesamten Prüflaufs anzugeben, indem zuerst die Gesamtgröße sämtlicher in der Liste angegebener Dateien ermittelt und dann die Anzahl gelesener Bytes prozentual angezeigt wird. In der Praxis stellte sich jedoch heraus, daß die dafür benötigte Zeitspanne äußerst lang werden kann, weswegen diese Berechnung nur bei weniger als 200 Dateien durchgeführt wird. Andernfalls wird einfach die Anzahl bereits verarbeiteter Dateien in Prozent der Gesamtanzahl Dateien berechnet.

Dieses Verfahren ist zwar das einfachste, aber es setzt voraus, daß sich die Prüfsummendatei im selben Verzeichnis befindet, das auch den Startpunkt des Verzeichnisbaums bildet, in dem sich die zu überprüfenden Dateien befinden. Dies ist meistens, wie auch bei der eComStation 1.2 Start-CD, jedoch nicht immer der Fall. Per definitionem handelt es sich bei dem Dateinamen in der MD5-Listendatei nur um einen relativen Pfad, es werden also kein Laufwerksbuchstabe und kein Wurzelverzeichnis (\) angegeben. Dies ermöglicht vollständige Freiheit bei der Plazierung des Satzes der zu prüfenden Dateien und der MD5-Datei. Stimmt der Startpunkt des Dateisatzes nicht mit der Position der MD5-Datei überein, so muß seine Position angegeben werden.

Am besten läßt sich dies an einem Beispiel erläutern. Angenommen, es befände sich eine Kopie der eComStation-CD auf der Festplatte, etwa unter E:\images\ver12, aber die MD5-Listendatei wäre f:\ecs\md5\ver12.md5. Dann startet man zuerst SigmaMD5, ruft über File > Open oder die Schaltfläche Check den OS/2-Standarddialog zum Öffnen von Dateien auf und wählt dann die MD5-Datei aus.

Abb. 2: MD5-Dialog-Datei Öffnen

Nach erfolgreicher Auswahl einer Listendatei wird ein neuer Dialog angezeigt. In diesem Dialog wird das Startverzeichnis des Dateisatzes festgelegt.

Abb. 3: Auswahl des Startverzeichnisses [Größeres Bild]

Die Navigation erfolgt entweder durch Auswahl der angezeigten Verzeichnisse oder Betätigen einer der Schaltflächen. Im Beispiel würde man zuerst das Laufwerk auswählen und sich dann durch den Verzeichnisbaum bewegen, bis man E:\images\ver12 ausgewählt hat. Die Positionen der Dateien werden dann jeweils durch den in der MD5-Listendatei angegebenen relativen Pfad bestimmt, dem der im Dialog Select Start Directory festgelegte Laufwerksbuchstabe und Pfad vorangestellt wird. Oftmals wird SigmaMD5 nicht über eine Zuordnung, sondern direkt gestartet werden. Befindet sich die MD5-Datei im Startverzeichnis des Dateisatzes, reicht Drücken von Set to MD5 Dir aus, um sofort auf dasselbe Verzeichnis zu verweisen, in dem die MD5-Listendatei ausgewählt wurde. Nachdem der Dialog mit Okay verlassen wurde, wird die Listendatei eingelesen und die Prüfsummen werden überprüft.

### Erstellung einer MD5-Datei

Um eine MD5-Listendatei zu erstellen, müssen erst das Startverzeichnis und die Dateien des Dateiensatzes angegeben werden. Nach Auswahl von Erstellen über das Dateimenü oder die Schaltfläche Create kann das Startverzeichnis in einem Dialog ähnlich Abbildung 3 ausgewählt werden. Anschließend wird der Dialog Create MD5 File angezeigt. Auf der ersten von zwei Seiten des Dialogs werden die gewünschten Dateien ausgewählt. Die Dateien werden in der Liste Files ausgewählt und in die Liste Selection einzeln oder in Gruppen übernommen. Die Auswahl erfolgt durch Hervorhebung der Dateien und anschließendes Drücken von Add, Doppelklicken oder Drücken der Taste `[Enter]`. Auf die gleiche Weise lassen sich vollständige Verzeichnisse mit Unterverzeichnissen und Dateien auswählen und in die Liste Selection kopieren. Da die rekursive Auswahl von Dateien sehr viel Zeit in Anspruch nehmen kann, wurde diese Funktion in einem eigenen Thread implementiert, wodurch zudem eine Funktion zum Abbrechen des Vorgangs eingebaut werden konnte. Während der Übertragung von Dateien in die Liste Selection wird die Schaltfläche Finish in Stop umgeändert.

Bei der Auswahl einzelner Dateien und Verzeichnisse kann es leicht vorkommen, daß eine Datei mehrmals ausgewählt wird. Um dies zu verhindern, wurde das Markierungsfeld Dup file inhibit hinzugefügt. Die Funktion wurde optional gehalten, denn die Überprüfung auf mehrfache Auswahl kann bei einer großen Anzahl Dateien sehr viel Rechenleistung benötigen. Da eventuell nicht immer ersichtlich ist, ob das Programm aktiv ist, wurde im oberen Bereich des Dialogs eine Aktivitätsanzeige in Form einer länger werdenden gepunkteten Linie hinzugefügt. Dies kann z.B. der Fall sein, wenn bei aktivierter Option Dup File Inhibit eine große Anzahl Dateien verarbeitet wird oder wenn bei der Dateiauswahl Filter aktiv sind.

Abb. 4: Erzeugen der Dateiauswahl [Großes Bild]

Über Filter kann die Auswahl der Dateien beeinflußt werden, wobei nach Datum und Dateiattributen gefiltert werden kann. Darüber hinaus können Einschluß- und Ausschlußlisten angelegt werden. Diese auf Seite zwei definierbaren Filter können einzeln ein- und ausgeschaltet werden. Zwischen Aufrufen von SigmaMD5 werden sie in einer INI-Datei gespeichert. Sind Filter vom letzten Aufruf aktiv, so wird auf Seite eins eine Warnung angezeigt.

Zur Anpassung der Daten und Nutzung eines Filters muß dieser zuerst aktiviert werden. Über das Markierungsfeld Inclusive Date wird die entsprechende Funktion aktiviert und der Cursor am Anfang des Eingabefeldes plaziert. OS/2 zeichnet für jede Datei drei Daten auf: das Datum der Erstellung, das Datum des letzten Zugriffs und das Datum des letzten Schreibzugriffs. In SigmaMD5 wird das Datum des letzten Schreibens verwendet.

Da ich einige frustrierende Erfahrungen mit Eingabefeldern hinter mir habe, habe ich versucht, die Nutzung so einfach wie möglich zu gestalten, indem bereits vorhandene Werte ersetzt werden und bei der Eingabe eine Plausibilitätsprüfung durchgeführt wird. Desweiteren wird der Cursor automatisch in das nächste Feld bewegt, ohne daß die Taste`[Tab]` oder die Maus zur Hilfe genommen werden muß. Wird ein Tag, Monat oder Jahr eingegeben, so wird keine Fehlermeldung angezeigt, bis entweder ein anderer Filter auswählt oder der Dialog geschlossen wird, es sei denn, es würde statt einer Zahl ein Buchstabe oder ein Symbol eingegeben. Wenn ein ungültiger Tag, Monat oder Jahr eingegeben wurde, wird der Wert im entsprechenden Feld rot hervorgehoben. Falls es sich um eine Fehlerkombination wie etwa den 31. September oder den 29. Februar in einem normalen Jahr handelt, werden alle potentiell fehlerhaften Felder orange dargestellt, da nicht eindeutig festgestellt werden kann, ob der Tag, der Monat oder das Jahr falsch ist. Das frühestmögliche Datum ist der 1. Januar 1980, da frühere Daten auf einem PC nicht dargestellt werden können. Das letzte Datum ist der 31. Dezember 2099 - für OS/2 ein gutes Alter, um in den Ruhestand einzutreten. Ist ein Einschlußdatum aktiv, können in der Dateiauswahl auf Seite eins nur solche Dateien ausgewählt werden, deren Datum des letzten Schreibzugriffs mit dem Filter übereinstimmt.

Die Einstellungen für Dateiattribute lauten Egal, An und Aus. Die Standardsymbole für ein Markierungsfeld mit drei Zuständen sind nicht eindeutig, weswegen ich nach einer anderen Lösung gesucht habe. Da ich keine Möglichkeit finden konnte, die Darstellung eines Markierungsfeldes zu ändern, entschied ich mich, eine normale Schaltfläche von der Größe eines Markierungsfeldes zu verwenden. Es werden leer für Egal, + für An und - für Aus benutzt, da dies am ehesten dem Befehl attribute entspricht und mir auch klarer erschien. Die meisten Programme zeigen nur Dateien ohne die Attribute Versteckt und System an. Ich habe jedoch für alle Attribute die Voreinstellung Egal gewählt, da Filter meiner Meinung nach stets etwas entfernen und nicht hinzufügen.

Abb. 5: Dateifilter

Die Ein- und Ausschlußfilter dürften selbsterklärend sein. Die meisten Fehler entstehen durch fehlerhafte Eingaben, daher wird versucht zu prüfen, ob die Ausschlußfilter mit Einschlußfiltern zusammenfallen. Dies kann jedoch über das Markierungsfeld Filter Cross Check deaktiviert werden. Da ein Filter definitionsgemäß kein Dateiname sein kann, wurde die Funktion Exclude File by Name hinzugefügt, so daß sich Dateien wie swapper.dat leicht ausschließen lassen.

Nachdem die gewünschten Dateien ausgewählt wurden, kann der Dialog zum Erstellen durch Drücken von Finish (während der Dateiauswahl als Stop angezeigt) auf Seite eins geschlossen und mit der Erstellung der MD5-Prüfsummen begonnen werden. Dabei wird im Anzeigebereich das gleiche Format verwendet wie bei der Prüfung mit einer MD5-Listendatei, und es wird wieder ein eigener Thread gestartet. Nach Abschluß des Vorgangs kann die Liste über den Standarddialog File Save in einer Datei mit der Endung .md5 gesichert werden..

### Menü und Optionen

Das Menü besteht aus den drei Teilen File, Options und Help. Unter File befinden sich die Einträge Open und Create, welche die gleiche Funktion wie die Schaltflächen Check und Create besitzen, sowie Save, Save and Quit und Exit. Im letzten Teil des Menüs befinden sich bis zu vier Pfade. Dabei handelt es sich um die letzten vier Dateien, die geöffnet oder gesichert wurden. Die Reihenfolge ist zeitlich absteigend. Mit Hilfe dieser Funktion lassen sich Dateien schnell noch einmal aufrufen (was sehr praktisch war, als ich das Startverzeichnis falsch ausgewählt hatte).

Abb. 6: Dateirückblick [Großes Bild]

Über die Menüeinträge Small, Medium und Large stehen drei verschiedene Schriftgrößen für entsprechende Bildschirmauflösungen zur Verfügung.

Das Menü Optionen bietet die Möglichkeit, ein Standard- oder benutzerdefiniertes Protokoll zu starten, zu stoppen und zu löschen. Das Protokoll zeichnet die Vorgänge und Ergebnisse bei der Erstellung oder Prüfung einer Listendatei auf. Aufgeführt werden Datum und Zeit des (Neu-)Beginns der Aufzeichnung, ob eine Datei erzeugt oder überprüft wurde, der Name der Listendatei sowie deren Inhalt. Bei einer Prüfung werden pro Datei das Prüfergebnis, ggf. Fehlermeldungen und Benutzeraktionen aufgezeichnet. Wenn die Protokollierung eingeschaltet ist, kann die Protokolldatei schnell sehr groß werden, daher wurde dem Protokollmenü eine Option für eine Warnung hinzugefügt.

Zur Verbesserung der Lesbarkeit der Prüfsummen wurde eine Trennzeichenfunktion hinzugefügt, die nach jedem vierten hexadezimalen Zeichen einen Bindestrich einfügt. Ist diese Funktion beim Sichern der Datei aktiv, ist das Format der Datei nicht mit der Ausgabe von GNU MD5Sum kompatibel!

Über Restore window size lassen sich die Standardwerte für Größe und Position des Fensters schnell wiederherstellen.

Sort on Error verschiebt alle bei der Prüfung oder Erstellung aufgetretenen Fehler an den Anfang der Liste, so daß diese einfacher gefunden werden können.

Die letzte Option dient der Registrierung. Das Programm funktioniert 31 Tage, danach ist eine Registrierung erforderlich. Sie ist kostenlos und es werden damit keine Verpflichtungen eingegangen. Ich habe dies nur hinzugefügt, um eine Übersicht über die Anzahl der Benutzer meines Programms zu erhalten und damit sehen zu können, ob sich eine Weiterentwicklung lohnt. Bis jetzt war der Rücklauf gering!

### Verschiedenes

Ein Problem, auf das ich gestoßen bin, betraf lange Dateinamen und Pfade. Es kann leicht vorkommen, daß ein Dateiname oder Pfad zu lang ist, um ihn vollständig anzeigen zu können. Ich wählte ein Verkürzungsverfahren, bei dem im Hauptfenster links abgeschnitten wird, so daß möglichst viel vom Dateinamen sichtbar bleibt. Ein solches Abschneiden wird durch zwei Punkte am Anfang des Pfades angezeigt. Im Statusfenster werden Pfade und Dateinamen rechts abgeschnitten. Auf diese Weise stehen in den meisten Fällen genug Informationen zur Verfügung, um Dateinamen wieder zusammensetzen zu können.

Wird das Fenster auf weniger als die Standardbreite gesetzt, wird nur die MD5-Prüfsumme abgeschnitten, und zwar rechts. Darüber hinaus wird ihre Farbe von blau auf dunkelblau geändert und es werden am Ende drei Punkte hinzugefügt. Die Änderung der Größe des Fensters ist sowohl horizontal als auch vertikal nur bis zu gewissen Mindestwerten möglich, so daß stets ein Minimum an Informationen sichtbar bleibt.

Mir fiel auf, daß Meldungen und Dialoge je nach der Position des Hauptfensters teilweise über den Bildschirmrand hinausgingen. Teilweise konnte dies dazu führen, daß Fenster aufgrund fehlender Erreichbarkeit der entsprechenden Schaltfläche nicht geschlossen werden konnten. Es werden nun sämtliche Unterfenster und Meldungen überprüft und zentriert, so daß sie bei jeder Auflösung möglichst weit sichtbar bleiben.

Sie fragen sich vielleicht, warum es eine DLL für große Dateien gibt. Wenn der Code Teil der Programmdatei ist und das OS keine großen Dateien unterstützt - wie es bei Warp 4 bis FixPak 12 der Fall ist -, so kommt es beim Laden zu einem Systemfehler und die Ausführung wird abgebrochen. Nun wird zuerst geprüft, ob die Version des Betriebssystems große Dateien unterstützt, und nur im positiven Falle wird die DLL geladen.

## Nachwort

Ich möchte Martin Vieregg für sein Programm Hypermake, das ich bei der Erstellung der Hilfedatei für SigmaMD5 eingesetzt habe, meinen Dank aussprechen.

Wie schon in der Hilfedatei gesagt, möchte ich Sie bitten, es mich wissen zu lassen, wenn Ihnen mein Programm gefällt. Denn wie andere Entwickler brauche auch ich etwas Ermunterung. Wenn Sie einen Fehler finden oder einen Einfall zur Verbesserung haben, teilen Sie es mir bitte mit.

Übersetzung: Christian Hennecke
Formatierung: Christian Hennecke
Korrektur: Karl-Heinz Markus