| 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

Prozedur

Funktion

printtext

gibt die Hypertext-Hilfe aus

mousebackground

ermittelt den Maushintergrund

string_under_mouse

ermittelt das Wort unter der Maus

openhelpfile

öffnet die Hilfedatei

closehelpfile

schließt die Hilfedatei

ersetzen

führt befehlsspezifische Ersetzungen im Hilfetext durch

searchtopic

sucht eine Hilfethema in der Hilfedatei

help

wird bei Aufrufe zur Hilfe zu Befehlen benutzt

help2

wird sonstigen Hilfethemen aufgerufen

mouseinhelp

wird aufgerufen, wenn ein Mausklick auf einen Link erfolgte

ZURÜCK

| HOME | NEWS | AWARDS | ABOUT ME | TEXTE | REFERATE | PROJEKTE |
|
MUSIK | CHAT | SPECIAL | LINKS |