| HOME | NEWS | AWARDS | ABOUT ME | TEXTE | REFERATE | PROJEKTE |
| MUSIK
| CHAT
| SPECIAL | LINKS |
4. Die Programmierung der Hilfe
4.1 Konzept der Hilfe
Bei der Programmierung der Hilfe war es oberstes
Ziel, ein möglichst flexibles System zu erstellen, mit dem es dem Benutzer
möglich ist, ähnlich der Turbo-Pascal-Hilfe, sich durch die Themen
durch Querverweise zu „klicken".
Da wir zusätzlich bei der Hilfe zu aktuellen
Programmzeilen noch programmabhängige Werte (Adressen) einfügen wollten,
kam es zur Entwicklung einer kleinen Hypertextsprache. Die Sprache sollte es
ermöglichen, mit einem „@" begonnene Wörter als Links darzustellen
und alle Wörter der Hilfe, die mit einer Raute (#) beginnen, durch entsprechende
Werte zu ersetzen.
Zudem sollte das Hilfesystem ohne Änderung
des Programmquelltextes überarbeitet werden können, weswegen eine
Auslagerung der Hilfedatei aus dem Programm erfolgte. Diese Hilfedatei wurde
mit Hilfe eines Konverters erstellt, der lediglich eine Textdatei in eine File-of-string-Datei
umwandelt. Diese Umwandlung erscheint auf den ersten Blick als sehr speicherintensiv,
da nun jeder Datensatz 255 Zeichen enthält, hat jedoch ihren Sinn dadurch,
daß es in solchen Dateien möglich ist, bestimmte Datensätze
anzusprechen mit Hilfe des „seek"-Befehls.
Somit ist es nun möglich, jederzeit eine
neue Hilfedatei in das Programm zu integrieren, ohne dazu den eigentlichen Quelltext
zu ändern oder zu rekompillieren.
4.2 Die programmiertechnische Realisation
Zunächst wird die Hilfedatei beim Programmstart
geöffnet. Das Schließen erfolgt erst bei Beendigung des Programms.
Um die Hilfe nun immer befehlsspezifisch erscheinen
zu lassen, wird in der „showall"-Prozedur stets auch die Hilfe mit den
Daten des aktuellen Befehls aufgerufen („help"-Prozedur). Dort wird nun
aus der Befehlsnummer der aktuelle Befehl als String ermittelt und dann der
„searchtopic"-Prozedur übergeben, die dann den Hilfetext zurückgibt.
Dies geschieht, in dem die Datensätze
der Hilfedatei nacheinander eingelesen werden und das erste Wort jeweils mit
dem gesuchten Wort verglichen werden, bis es zu einer Übereinstimmung kommt
oder die Datei zu Ende ist.
Wird kein Datensatz gefunden, wird der Text
des HLT99-Befehls angezeigt.
Der ermittelte Hilfetext wird dann der Prozedur
ersetzen übergeben, wo befehlsspezifische Werte (Adressen) eingefügt
werden. Dies passiert mit der „pos"-Funktion die nach der Raute (#) sucht.
Der so umgewandelte Text wird dann der Prozedur
„Printtext" übergeben. Diese Prozedur ist nötig, da sie dafür
sorgt, daß Wörter am Zeilenende umgebrochen, Hyperlinks dargestellt
und erzwungene Returns (mit dem %-Zeichen) dargestellt werden. Dabei werden
die Links, die durch die Form @WORT dargestellt sind durch einen roten Hintergrung
markiert.
Ob nun ein Link mit der Maus angewählt
wurde, entscheidet sich in der „run"-Prozedur. Durch den Aufruf von „mousebackground"
kann die Hintergrundfarbe an der Mausposition ausgelesen werden, durch einen
Zugriff auf den Bildschirmspeicher. Ist dieser mit der Linkfarbe identisch,
wird der angewählte Befehl durch die Prozedur „string_under_mouse"
ausgelesen (Prozedur „mouseinhelp"). Dazu wird der Bildschirmspeicher rechts
und links vom Mauszeiger soweit ausgelesen, bis ein Leerzeichen gefunden wird.
Dies setzt voraus, daß Links stets von Leerzeichen umgeben sind.
Dieser so ermittelte String wird dann der
Prozedur „help" übergeben,wenn er nur 3 Zeichen enthält. Damit
ist nämlich signalisiert, daß es sich um einen Befehl handelt und
damit befehlsspezifische Änderungen am Hilfetext nötig sind. Ist der
Hilfetext länger, wird die Prozedur „help2" aufgerufen, wo dann lediglich
nach dem String gesucht wird und dieser dann ausgegeben wird.
Damit ist das Hilfesystem komplett.
4.3 Die erstellten Prozeduren und Funktionen
ZURÜCK
| HOME | NEWS | AWARDS | ABOUT ME | TEXTE | REFERATE | PROJEKTE |
| MUSIK
| CHAT
| SPECIAL | LINKS |