Autor |
Nachricht |
< Parsen von Nummern im Name |
|
Verfasst am:
So, 23 Mai 2004 - 10:56
|
|
|
Kompassleser
Anmeldungsdatum: 21.02.2004
Beiträge: 198
Wohnort: Rheinmain
|
|
Hi,
ich knobel gerade an einem Problem mit Nummern.
Ich habe drei Schalter (in einem Raum), die nicht nur mit "schalter eins" oder "erster schalter" erkannt werden sollen, sondern auch über "schalter 1", "schalter 2" usw.
Nach einigen Fehlversuchen habe ich es mit parse_name versucht:
Code: | parsename [
...
if (nextword() == '1' return 2);
... |
Leider wird bei
>x schalter 1
das Objekt immer noch nicht erkannt.
Hat jemad eine Idee oder gar Lösung?
Grüße
Kris |
|
|
|
|
|
Verfasst am:
So, 23 Mai 2004 - 16:25
|
|
|
Wasserträger
Anmeldungsdatum: 07.06.2003
Beiträge: 35
|
|
Hallo Kris,
ein ähnliches Problem hatte ich auch mal (siehe auch folgender Thread weiter unten: http://www.ifzentrale.de/forum/viewtopic.php?t=455).
Willst du ein einzelnes Zeichen in das Wörterbuch aufnehmen, dann mußt du zwei 'Slashs' hintenanstellen, soweit ich weiß. Also statt '1' immer '1//' angeben.
Marc
PS: Wenn ich da was falsch verstanden habe, dann korrigiert mich bitte. |
|
|
|
|
|
Verfasst am:
So, 23 Mai 2004 - 16:28
|
|
|
Wasserträger
Anmeldungsdatum: 07.06.2003
Beiträge: 35
|
|
Hmmm, zugegeben, mir ging es in dem o.a. Thread um etwas anderes, aber du kannst in Martins Codebeispiel erkennen, wie es funktioniert. |
|
|
|
|
|
Verfasst am:
So, 23 Mai 2004 - 16:45
|
|
|
Kompassleser
Anmeldungsdatum: 21.02.2004
Beiträge: 198
Wohnort: Rheinmain
|
|
Tausend Dank!
Unglaublich... und so einfach!
Ich habe nochmal im DM4 gesucht, darüber steht aber nichts drin.
Martin scheint wohl einer der wenigen "Inform-Rookies" (wie er sich selbst nennt) zu sein, die auf fast alle Fragen eine Antwort haben.
@Martin: Woher wusstest Du das mit den Slashes???
Kris |
|
|
|
|
|
Verfasst am:
So, 23 Mai 2004 - 18:14
|
|
|
Kompassleser
Anmeldungsdatum: 21.02.2004
Beiträge: 198
Wohnort: Rheinmain
|
|
Zitat: | Ich habe nochmal im DM4 gesucht, darüber steht aber nichts drin. |
Stimmt nicht!
Ich habe es gerade auf Seite 10 gefunden. Bei den Grundlagen der Grundlagen sozusagen.
Es hat nichts mit der Zahl sondern mit der Länge (oder besser gesagt Kürze) des "Wortes" zu tun. Alle Wörter die nur aus einem Buchstaben bestehen, müssen mit "//" (z.B. 'h//') angegeben werden.
Grüße
Kris |
|
|
|
|
|
Verfasst am:
So, 23 Mai 2004 - 21:22
|
|
|
Experte
Anmeldungsdatum: 25.08.2002
Beiträge: 677
Wohnort: München
|
|
Kris hat folgendes geschrieben: | Woher wusstest Du das mit den Slashes??? |
Know thine enemy... :-)
Naja, diese Notation taucht öfters im DM4 auf, z.B. ab Seite 261, wo es um die Übersetzung der Lib (und ihrer Ein-Zeichen-Abkürzungen) geht, oder in der Lösung zu Aufgabe 67, wo die einzelnen Scrabble-Steine Namen mit nur einem Buchstaben haben.
Letzten Endes ist diese Notation nur eine Krücke, da die ZSCII-Werte von Zeichen und Vokabeln die Syntax "Zeichen in Hochkommas" verwenden.
Graham selbst hat folgendes geschrieben: | If I were free to redesign the Inform grammar in the light of the last three years' experience (which I am loath to do, since so much Inform source code now exists), here are the changes I think I would make:
- introduce commas as separators between array values and <<Action ...>> parameters;
- remove the statements quit, restore, save, style, font, spaces, box, inversion and read: the first three ought to be used via the assembler anyway, and the last six ought to be system-provided functions;
- use single quotes to refer to dictionary words used as values of "name", thus removing an anomalous rule going back to Inform 1, and to refer to dictionary words in grammar;
- find some notation for literal characters which does not look like the notation for dictionary words: e.g., ''z'' rather than 'z';
- abolish the distinction between actions and fake actions;
- rename the Global directive "Variable";
- require an = sign to be used in "Constant X 24" directives.
|
(Inform Technical Manual, Kapitel 5.4, eher zähe Lektüre. Das vorgeschlagene Format sind je zwei Hochkommas vor und nach dem Zeichen, keine Gänsefüßchen.) _________________ Every silver lining has a cloud. |
|
|
|
|
|