IF-Forum

» IF-Forum - Autorencafé - Schreiben! - Fall-Fehler in der deutschen WriteListFrom?
AntwortenNeues ThemaNeue Umfrage

Fall-Fehler in der deutschen WriteListFrom?

Geschrieben um 11:51 am 21.06.2004 | Zitat | Editieren | Löschen
Kris
Mitglied
Dr Gumby
Beiträge: 181

Hallo,

sollte ich einen Beitrag übersehen haben in dem es genau darum geht, sage ich jetzt schon mal sorry.

Vorab: Ich arbeite mit der inform 6/10, deutsche lib19.

Für alle die es nachvollziehen wollen habe ich der Einfachheit halber in Klammern die jeweilige Datei der Funktion oder Konstante geschrieben, damit ihr's leichter findet :-)

Folgendes Problem:

Ich habe einfach mal einen Tisch in Max's Raum gestellt:



   with dekl 1,

        name 'tisch',

        description "Ein einfacher Tisch.",

        

   has male supporter;```

Wenn ich den Knödel nun auf den Tisch lege und alles mal untersuche passiert folgendes:

Startraum

Du befindest dich in einem Raum, der bar jeglicher bemerkenswerter Merkmale ist.

Du siehst hier einen saftigen Knödel und einen Tisch.

>nimm knödel

Du trägst den saftigen Knödel jetzt bei dir.

>leg ihn auf tisch

Du legst den saftigen Knödel auf den Tisch.

>l

Startraum

Du befindest dich in einem Raum, der bar jeglicher bemerkenswerter Merkmale ist.

Du siehst hier einen Tisch (darauf siehst du einen saftigen Knödel).

>sieh auf tisch nach

Auf dem Tisch ist einen saftigen Knödel.

Das Problem ist, dass hier eine Liste im Fall Akk läuft, in der WriteListR (verblibm.h) aber der Verweis auf die Konstante IS__TX (also " ist ") zeigt. (IS__TX wird in german.h deklariert)

```if (c_style & ISARE_BIT ~= 0)

  {   if (j==1 && o hasnt pluralname)

          print (string) [b]IS__TX[/b]; else print (string) ARE__TX;

      if (c_style & NEWLINE_BIT ~= 0) print ":^"; else print (char) ' ';

      c_style = c_style - ISARE_BIT;

  }```

Sonst wird mit IS2__TX ("siehst du ") gearbeitet, z.B. bei dem Inhalt eines Containers.

Man könnte jetzt einfach die WriteListR ersetzten und aus dem IS__TX ein IS2__TX machen, aber dann stimmen die Leerzeichen nicht (bei dem einen ein führendes bei dem anderen ein folgendes).

Ohne Fehler hat es bisher funktioniert in dem ich in der LanguageLM (german.h) unter "search:" den Fall der Liste von Akk auf Nom gesetzt habe:

```Search:  switch(n)

           {   1: "Aber es ist dunkel.";

               2: "Da ist nichts auf ", (dem) x1, ".";

               3: print "Auf ", (dem) x1;         !Max Kalus

                  WriteListFromCase(child(x1),

                      TERSE_BIT + ENGLISH_BIT + ISARE_BIT + CONCEAL_BIT, 0, Nom);

.......

     ```

Habt Ihr Euch schon auf einen "Standard" geeinigt oder bastelt das jeder selbst?

(oder habe ich etwas übersehen?)
Geschrieben um 16:50 am 21.06.2004 | Zitat | Editieren | Löschen
ChrisW
Mitglied
Dr Gumby
Beiträge: 275

Bis zur Library-Version 18 stand in der german.h noch:



                  WriteListFromCase(child(x1),

                      TERSE_BIT + ENGLISH_BIT + ISARE_BIT + CONCEAL_BIT, 0, Gen);```

Ich hatte den Fehler entdeckt, weil er im "Provisorium" (einem Wettbewerbsbeitrag von mir) zu

*>schau auf küchentisch nach

Auf dem Küchentisch ist eines Kochbuchs.*

führte. Ich habe Max damals (vorschnell und fehlerhaft, argh) vorgeschlagen, den Genitiv durch den Akkusativ zu ersetzen.  Im Falle des Kochbuchs (dekl 2, neuter) funktionierte das, weil Akkusativ und Nominativ identisch sind. Deshalb ist mir nicht aufgefallen, dass ich den Fehler lediglich durch einen weiteren Fehler ersetzt habe.

Falls gegen den Nominativ niemand Einwände hat, schreib Max doch mal ne E-Mail, er liest hier nicht so regelmäßig mit.
Geschrieben um 18:40 am 21.06.2004 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

Ich denke mal, wenn ISARE_BIT gesetzt ist, müsste die Liste immer im Nominativ ausgegeben werden. (Oder besser gesagt, das ISARE_BIT ist nur bei Nominativ-Listen sinnvoll.) Könnte man so etwas nicht automatisieren? (Nur so'n Gedanke.)

Geschrieben um 21:02 am 21.06.2004 | Zitat | Editieren | Löschen
Kris
Mitglied
Dr Gumby
Beiträge: 181

Hallo,

Zitat:

Ich habe Max damals (vorschnell und fehlerhaft, argh) vorgeschlagen, den Genitiv durch den Akkusativ zu ersetzen.

Macht nix - besser du wie ich ;-) (wie wir in Hessen sagen)

Zitat:

Falls gegen den Nominativ niemand Einwände hat, schreib Max doch mal ne E-Mail, er liest hier nicht so regelmäßig mit.

Habe ich gemacht.

Ansonsten habe ich nochmal die einzelnen .h-Files durchsucht und versucht den ListWriter zu verstehen (Haha) und bin auf folgendes in der german.h gestossen (übrigens nur ein paar Zeilen über den Search-Messages:



           {   1: print " (auf ", (dem) x1, ")";

               2: print " (in ", (dem) x1, ")";

 !               3: print " (als "; @print_obj x1; print ")";

               3: print " (als ", (object) x1, ")";

               4: print "^Auf ", (dem) x1;

                  WriteListFromCase(child(x1),

                      ENGLISH_BIT + RECURSE_BIT + PARTINV_BIT

                      + TERSE_BIT + ISARE_BIT + CONCEAL_BIT, 0, Nom);

                  ".";

        ```

Hier wird der Fall so gesetzt, wie wir es (hoffentlich richtig) denken.

Diese Message wird von der SayWhatsOn(Object) genutzt.

**Zitat:**
> Ich denke mal, wenn ISARE_BIT gesetzt ist, müsste die Liste immer im Nominativ ausgegeben werden. 

Hier kann man entweder mit WriteListFrom arbeiten, dann ist WriteListCase standardmässig auf Akk gesetzt, oder mit WriteListFromCase und dann einen Fall wählen, daher macht es eigentlich keinen Sinn bei WriteListFomCase den Akk zu wählen.

Für ISARE_BIT müsste also immer mit WritListFromCase (.......,Nom) gearbeitet werden.

**Zitat:**
> Könnte man so etwas nicht automatisieren?

Hmm, ich habe keine Möglichkeit gefunden ohne ordentlich in den ListWriter einzugreifen, aber ich bin auch noch neu.

Man könnte auch das ISARE_BIT entfernen und " siehst du " einfügen:

```3: print "Auf ", (dem) x1," siehst du ";         !Max Kalus - ergänzt von Kris ;-)

                  WriteListFromCase(child(x1),

                      TERSE_BIT + ENGLISH_BIT + CONCEAL_BIT, 0, Akk);

                  ".";

               ```

Ich persönlich fände aber die Version wie bei der Look-Message die sauberste. Was meint ihr?

Grüße

Kris
**Zitat:**
>
Geschrieben um 11:22 am 23.01.2005 | Zitat | Editieren | Löschen
ChrisW
Mitglied
Dr Gumby
Beiträge: 275

Ha, den Thread hatte ich ganz vergessen. Erst durch eine Äußerung von Kris drauf gestoßen, dass der Fehler ja immernoch in der Lib ist.

Kris:

Zitat:

Falls gegen den Nominativ niemand Einwände hat, schreib Max doch mal ne E-Mail, er liest hier nicht so regelmäßig mit.

Habe ich gemacht.

Hast du eine Antwort bekommen? Ich wundere mich nur, immerhin ist das über ein halbes Jahr her und es sind gerade mal drei Buchstaben auszutauschen (rein für die Fehlerbehebung, dir sind ja auch noch andere Sachen eingefallen)....

Geschrieben um 16:52 am 23.01.2005 | Zitat | Editieren | Löschen
Kris
Mitglied
Dr Gumby
Beiträge: 181

ChrisW:

Hast du eine Antwort bekommen?

Nein, die ist wohl untergegangen.

AntwortenNeues ThemaNeue Umfrage
Powered by Spam Board SVN © 2007 - 2021
Impressum / Datenschutz