Forum moved to if-forum.org
Autor Nachricht
<  Text vom Keyboard in einen String?
Kris
BeitragVerfasst am: Fr, 25 Jun 2004 - 11:20  Antworten mit Zitat
Kompassleser
Kompassleser


Anmeldungsdatum: 21.02.2004
Beiträge: 198
Wohnort: Rheinmain

Hallo,

kann mir biiiitte jemand sagen, wie man eine Texteingabe in einen String bringt?
Ich bin ehrlich am Verzweifeln. Ich habe DM4 auf den Kopf gestellt, parserm und verblibm auf Hinweise durchforstet und habe nichts gefunden.
Mit read_char hatte ich wenigstens Teilerfolge, (größtes Problem ist, dass bei print des eingelesenen chars kein [delete] u.a. möglich sind.) Mit aread komme gar ich nicht weiter, bei KeyboardPrimitive und "Konsorten" weiss ich nicht, ob ich überhaupt richtig liege... (Beim C64-Basic hätte ich einfach Input T$ verwendet ;-)

Es soll ein Text (es genügt ein Wort, also ohne Leerzeichen oder Komma) eingegeben werden, der nicht über den Parser laufen soll.
Diesen String möchte ich dann weiter verarbeiten.

Noch ein Nacht verkrafte ich nicht....


Tausend Dank schon mal


Kris
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Martin
BeitragVerfasst am: Fr, 25 Jun 2004 - 14:12  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 25.08.2002
Beiträge: 677
Wohnort: München

Das Problem bei @read_char ist, dass immer nur ein Zeichen gelesen wird. Das kann zwar wieder ausgegeben werden, aber der Backspace kann nicht benutzt werden, weil einmal Ausgegebenes nicht wieder gelöscht werden kann. (Es sei denn, die Nachfrage findet im oberen, dem Statusfnster statt, aber wir wollen die Sache hier nicht verkomplizieren.)

Eine ganze Zeile wird eingelesen mit der Direktive

Code:

    read buffer parse;


die in Kapitel 2.5 des DM4 beschrieben wird. buffer ist ein Byte-Feld, das die eingegebenen Zeichen enthält, das Mischfeld parse enthält Informationen über die gefundenen Wörter, wie genau die Information abgelegt wird, steht ebenfalls in Kapitel 2.5. Anstelle des zweiten Feldes kann auch Null stehen, dann wird die Eingabe nicht lexikalisch analysiert. (Es gibt weitere, optionale Parameter, die den Input nach einer gewissen Zeit abbrechen können (Interrupt Request) und oft benutzt werden, um Echtzeiteffekte zu programmieren. Again, let's not complicate things.)

Praktischerweise gibt es in der Lib bereits die beiden Felder buffer und parse für die normale Eingabe, sie sind auch schon groß genug dimensioniert. Diese kann man benutzen, wenn der Parser zum Zeitpunkt der Nachfrage bereits seine Arbeit erledigt hat, was im Normalfall so sein dürfte.

Ein Nachteil von read ist, dass die Eingabe im Gegensatz zu @read_char immer in reinen Kleinbuchstaben vorliegt, man kann hier nicht zwischen Groß- und Kleinschreibung unterscheiden.

Die Lib-Routine KeyboardPrimitive macht eigentlich nichts anderes als ein read mit den übergebenen Parametern durchzuführen - wenn z-Code erzeugt werden soll. Für Glulx ist die Sache komplizierter, so dass du vielleicht diese Routine verwenden solltest, um den Code allgemein gültig zu halten, falls du hinterher auf Glulx umschwenken möchtest.

Und zum Schluss noch ein gut gemeinter Ratschlag für das Design des Zwischenprompts:
http://eblong.com/zarf/inftricks/bug_subprompt.html
_________________
Every silver lining has a cloud.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Alle Zeiten sind GMT + 1 Stunde (MEZ)

Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Seite 1 von 1
if-de :: Forum Foren-Übersicht  >  Inform & Glulx

Neues Thema eröffnen   Neue Antwort erstellen


 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.



Kontakt: Administrator

Powered by phpBB and NoseBleed v1.05