Programmer's Corner 10-'91 --------------------------- Hallo Ihr Leser der Programmer's Corner, in dieser Ausgabe geht es um Tastatureingaben. Nur wenige Programme kommen ohne die Tastatur aus, sie ist die Schnittstelle zwischen dem Menschen und dem Computer. Nur kleine Utilities und Programme mit Mausbedienung verzichten gewöhnlich auf die Tastatur. Also ein Grund, sich einmal näher mit diesem Eingabemedium zu beschäftigen. Die einfachste Möglichkeit der Tastatureingabe hat auch der blutigste BASIC-Laie bestimmt schon einmal verwendet: Den INPUT Befehl! Dieser Befehl ist wohl in jeden BASIC Versionen vorhanden und liest eine Zeichenkette von der Tastatur in einen String ein. Die Eingegebenen Zeichen werden hierbei auf dem Bildschirm angezeigt und können wie im BASIC Editor mit Sondertasten editiert werden (z.B. Delete Back Space, Insert...). Hier ist aber nun auch ein Haken an der Sache: Stellt euch vor, euer Programm benötigt eine Tastatureingabe innerhalb einer von euch mit Mühe gestalteten Bildschirmmaske. Der Benutzer soll nur einen Filenamen eingeben. Nun, weiterhin stellen wir uns vor, dieser Benutzer ist Otto Laie, der seinen schönen Atari erst vor zwei Tagen von einem Arbeitskollegen gekauft hat, um nun auch in das Computerzeitalter vorzustoßen. Er lädt das Programm und wird hier nun aufgefordert, den Filenamen einzugeben. Er tippt: A:OTTO.DAT. Aber halt, A:, das war das in der Firma. Er erinnert sich, das es doch nun D: heißen muß. Also den ganzen Schlamassel löschen, und löschen heißt ja bekanntlich im Englischen CLEAR. Und so nimmt das Verhängnis seinen Lauf, flinke Finger huschen über die Tastaur und die schöne Bildschirmmaske verschwindet im Nirwana. Moral von der Geschicht: Verwend den ATARI-Input nicht! Guter Rat, aber wie soll Otto dann dem Computer den Filenamen mitteilen? Antwort: Über einen selbstgebauten INPUT Befehl. Und damit wir diesen eigenen Input nicht jedesmal neu programmieren müssen, erstellen wir eine Prozedur, die sich in jedes Programm einbinden läßt. Eine solche selbsterstellte INPUT Routine hat viele Vorteile: Die Länge der Eingabe kann festgelegt werden, es werden nur die Tastatureingaben zugelassen, die einen Sinn ergeben (z.B. wenn einen Zahl eingegeben werden soll, werden nur die Zifferntasten berücksichtigt), es können Eingabevorgaben gemacht werden (Defaultwerte) und die Routine kann man an eigene, spezielle Bedürfnisse, anpassen. Auf der Diskette befindet sich einer meiner INPUT Routinen (GETIN.TUR), die Ihr als Muster für eigene Verwenden könnt. Die Benutzung ist folgende: Im String GETIN wird vor dem Aufruf der Routine der Eingangswert angegeben (Defaultwert), z.B. LET GETIN$="D1:". Die Variablen G_XPOS und G_YPOS nehmen die Bildschirmkoordinaten auf, an der die Eingabe erfolgen soll. In der Variablen G_LEN wird die maximale Länge der Eingabe angegeben, und in G_COFS der Cursoroffset, d.h. die Stelle, an der der Cursor am Anfang stehen soll. Einige Beispiele: Eingabe einer 20 Stellen langen Zeichenkette, ohne Vorgabe: LET GETIN$=" " (20 Leerstellen) G_XPOS = 5 G_YPOS = 10 G_COFS = %1 G_LEN = 20 EXEC GETIN Eingabe eines Filenamens (17 Stellen) mit Vorgabe: LET GETIN$="D1: " G_XPOS = 5 G_YPOS = 10 G_COFS = 4 (hinter dem ':') G_LEN = 17 EXEC GETIN Das war's für diese Ausgabe. In der nächsten Programmer's Corner dreht es sich wieder um die Tastatur, diesmal aber um die Abfrage einzelner Tasten (Keyboard, Funktionstasten, Break-Taste, SHIFT-CONTROL Kombinationen uvm.) Bis dahin Tschüß, Carsten Strotmann