Forum moved to if-forum.org
Autor Nachricht
<  Fall-Fehler in der deutschen WriteListFrom?
Kris
BeitragVerfasst am: Mo, 21 Jun 2004 - 10:51  Antworten mit Zitat
Kompassleser
Kompassleser


Anmeldungsdatum: 21.02.2004
Beiträge: 198
Wohnort: Rheinmain

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:

Code:
Object  Tisch "Tisch" startraum
   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)

Code:
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:

Code:
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?)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ChrisW
BeitragVerfasst am: Mo, 21 Jun 2004 - 15:50  Antworten mit Zitat
Abenteurer
Abenteurer


Anmeldungsdatum: 26.08.2002
Beiträge: 278
Wohnort: Leipzig

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

Code:
               3: print "Auf ", (dem) x1;         !Max Kalus
                  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.
_________________
"Ein Musiker! Was will der hier so spät?" Stolzing (Meistersinger v.N.)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Martin
BeitragVerfasst am: Mo, 21 Jun 2004 - 17:40  Antworten mit Zitat
Experte
Experte


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

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.)
_________________
Every silver lining has a cloud.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Kris
BeitragVerfasst am: Mo, 21 Jun 2004 - 20:02  Antworten mit Zitat
Kompassleser
Kompassleser


Anmeldungsdatum: 21.02.2004
Beiträge: 198
Wohnort: Rheinmain

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:

Code:
Look:    switch(n)
           {   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:

Code:
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:
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ChrisW
BeitragVerfasst am: So, 23 Jan 2005 - 10:22  Antworten mit Zitat
Abenteurer
Abenteurer


Anmeldungsdatum: 26.08.2002
Beiträge: 278
Wohnort: Leipzig

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 hat folgendes geschrieben:
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)....
_________________
"Ein Musiker! Was will der hier so spät?" Stolzing (Meistersinger v.N.)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Kris
BeitragVerfasst am: So, 23 Jan 2005 - 15:52  Antworten mit Zitat
Kompassleser
Kompassleser


Anmeldungsdatum: 21.02.2004
Beiträge: 198
Wohnort: Rheinmain

ChrisW hat folgendes geschrieben:
Hast du eine Antwort bekommen?


Nein, die ist wohl untergegangen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht 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