Technische Tips & Tricks: QuickAddress, Teil 1 B. Kühnast Schock! Was für eine Überschrift! Aber keine Panik. QuickAddress ist ein Projekt (genauer gesagt eine Adressen- verwaltung, wie der Name schon vermuten läßt), das im Rahmen der Tips & Tricks verwirklicht wird. Programmiersprache ist Quick (aber das überrascht bei dem Namen wohl keinen mehr). Keine Angst, auch wenn es so eine Art Serie in der Serie wird, hat es immer noch genug mit Tricks zu tun. Damit das ganze einigermaßen übersichtlich und hoffentlich verständlich bleibt (wenn nicht, bitte schreiben!), werden die einzelnen Funktionen in Modulen entwickelt. Das ganze soll zum Verwalten von Adressen dienen, auch für kleine User-Groups, um die Mitglieder zu speichern etc. Ich will hier nicht viel von den Features erzählen. Ich habe das Projekt zwar schon fertig konzipiert, aber erstens will ich nicht alles vorher verraten, und zweitens weiß ich nicht, ob ich alles implementieren (Fachdeutsch für "einbauen") kann. Für alle, die das Programm einfach nur benutzen wollen, zuerst die Anleitung. Für alle anderen folgt weiter unten die Erklärung im einzelnen. Diesen Monat gehts um die Eingabe. Nach dem Laden erscheint der Programmtitel und die Aufforderung, Adressen ein- zugeben. Das ist zwar etwas bescheiden für ein Titelbild, aber das Haupt- programm dient ja auch nur zur Er- gänzung des Eingabe-Moduls. Jetzt kann man mit dem Tippen anfangen. Dazu einige Regeln: Die Adresse wird in einem durch geschrieben und durch Kommata getrennt. Die Adresse wird mit RETURN beendet. Nach einem Komma darf kein Leerzeichen stehen. Die Adresse darf maximal 80 Zeichen lang sein. Der Nachmame muß immer vor dem Vornamen stehen. Das klingt schlimmer, als es ist. Als Beispiel: Petersen,Ulf,Postfach 1103,2322 Lütjenburg(RETURN) Also erst Nachname, Komma als Trenn- zeichen,Vorname etc. bis die Adresse erfasst ist. Wenn man Straßen grund- sätzlich abkürzt, kommt man mit 80 Zeichen auch gut hin. Weitere Angaben nach dem Ort (Land, z. B. Österreich) und dem Vornamen (z. B. User-Mag) sind erlaubt. Das ist der Vorteil diese Eingabe- Konzepts: Es ist flexibel. Hätte ich mit festen Feldern gearbeitet, müßte man sich daran halten. Stehen für den Namen nur 15 Zeichen zur Verfügung, kommt man bei Doppelnamen zu Problemen. In unserem Falle kann man den Platz so aufteilen, wie es paßt. Die Eingabe wird beendet durch ein RETURN ohne Adresse. Bitte nicht zu viele Adressen erfassen, ich weiß noch nicht, wieviel Platz später für Daten vorhanden ist, weil das Programm noch nicht fertig ist. 100 sollten fürs erste reichen. Ach ja, noch was, bevor ich mit den Erklärungen beginne: Die Tastatur ist deutsch. Sie sieht im Programm so aus: 1 2 3 4 5 6 7 8 9 0 ß > q w e r t z u i o p ü a s d f g h j k l ö ä y x c v b n m , . - Das entspricht zwar nicht 100prozentig der deutschen Norm, aber doch in den wichtigsten Punkten. Control-Tasten und inverse Zeichen sind wirkungslos. Außer den normalen Zeichen funktioniert nur Backspace, aber keine Cursor-Tasten. So, jetzt werfen wir einen Blick auf das Programm. Nach den Variablen- Deklarationen wird die Install-Prozedur aufgerufen. Diese lädt den deutschen Zeichensatz und die deutsche Tastatur- Belegung. Der Ablauf ist jeweils Datei öffnen, Daten einlesen (mit BGET), Datei schließen und Betriebssystem- Vektor ändern, d. h. die Adresse des Zeichensatzes bzw. der Tabelle einpoken. Die Tastatur umstellen ist ganz einfach. Die entsprechende Tabelle, die auch im Programmers Corner des letzten Monats erwähnt wurde, kann vom User verändert werden. Man muß nur die ASCII-Codes, die in der Original- Tabelle stehen, auf die gewünschten Werte ändern und den Zeiger des Betriebssystems (121/122 $79/$7A KEYDEF) auf die eigene Tabelle einstellen. Das geht aber nur bei XL- und bei XE-Modellen, micht bei den alten 400ern und 800ern. Weil das ganze etwas abstrakt klingt, hier etwas exakter: 1. Die alte Tabelle kopieren. Beispiel: DPEEK(121,ADR) FMOVE(ADR,$0600,256) bringt die Tabelle in Seite 6. 2. Mit Hilfe eine Schleife den ge- wünschten Wert (z. B. 65 für A) suchen und durch den eigenen Wert (in ASCII) ersetzen. 3. Die Tabelle einschalten. Beispiel: DPOKE(121,$0600) Voila! Weiter im Listing: Nach Öffnen von einem Kanal für die Tastatur und einem Kanal für die Daten (Kanal 5, so kann man direkt mit LPT auf die Diskette schreiben!) wird die Eingabe-Routine aufgerufen. Diese erhält direkt einen Maximalwert, wie lang die Eingabe werden darf. Zuerst wird eine Taste eingelesen. Dann wird geprüft, ob es eine CONTROL-Taste war (<32) oder ein inverser Wert (>127). War es nicht Backspace, wird der Zähler um eins erhöht und das Zeichen gespeichert und ausgegeben. War es Backspace, wird das letzte Zeichen auf dem Bildschirm und im Puffer gelöscht. War es Return, oder sind es 80 Zeichen, wird die Eingabe beendet und auf Disk gespeichert. Um die Ausgabe später einfach zu machen, habe ich den Zeichensatz an den eigentlichen ASCII-Zeichensatz angepaßt. Das bei Ataris ASCII (ATASCII) der Wert 126 für Backspace steht, in normalem ASCII aber für ß mußte ich die Backspace-Funktion auf den Wert 127 umwandeln. Wenn das etwas unverständlich klang (war eigentlich unwichtig), kann mans auch im ATARI-Profibuch auf Seite 246 unten nachsehen. Wird einfach nur RETURN gedrückt, hört die Eingabe-Schleife auf und das Programm endet nach dem Schließen aller Kanäle. So, das war wohl erstmal genug. Ich hoffe, daß ich mich verständlich ausgedrückt habe. Bis zum nächsten Mal: Good Byte!