IF-Forum

» IF-Forum - Autorencafé - Schreiben! - * Warning: grammar properties might not work correctly *[I6]
AntwortenNeues ThemaNeue Umfrage

* Warning: grammar properties might not work correctly *[I6]

Geschrieben um 06:35 am 03.04.2011 | Zitat | Editieren | Löschen
C++
Mitglied
Bachelor Gumby
Beiträge: 40

Hallo an alle, die das Problem mit I6 auch haben:

Bei mir ist die Meldung noch mal erschienen, ohne dass sie etwasmit den Verben zu tun hatte, sondern mit den individual props, von denen ich offenbar zu viele gleichnamige definiert hatte.

Ich hatte das DM4 so verstanden, dass das geht. Gleichnamig waren sie auch nur, weil sie dasselbe leisten sollten und ich nicht für jede der Aktionen eine globale Variable einführen wollte.

Ich habe nun zwei individual pros, die ich häufig verwendet habe, mit "Property" im Header definiert und seitdem läuft das Programm zumindest technisch ohne erkennbare Fehler...

Schöne Grüße,

Christof

Geschrieben um 08:49 am 29.05.2012 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

Vermutlich ist es nicht mehr wichtig, aber der Vollständigkeit halber: Mir ist am Wochenende beim Aufräumen das DM4 in die Hände und dabei fast auseinandergefallen. Ich glaube, ich weiß jetzt, weswegen die Fehlermeldung oben kommt.

Mit der Eigenschaft grammar kann man für manche Gesprächspartner eigene Satzmuster definieren, Abschnitt 18 ist voll von Bordcomputern und Replikatoren, denen man Befehle erteilen kann. Diese Eigenschaft kann false, true, ein 'verb' als Wörterbucheintrag oder -'verb', also der negative Wert eines Wörterbucheintrags sein.

Wörterbucheinträge sind nicht vorzeichenbehaftete ganze Zahlen, die eine Adresse im Bereich von 0 bis 65535 angeben. Die Negation mit - betrachtet diese Adresse allerdings als vorzeichenbehaftete Zahlen. Adressen von 0 bis 32767 bleiben, Adressen von 32768 bis 65535 werden als -32768 bis -1 betrachtet.

Je nachdem, wie viele Objekte und Felder definiert sind, liegt das Wörterbuch komplett im Bereich der positiven oder negativen Zahlen oder es liegt im Übergangsbereich. Aber selbst im Übergangsbereich kann man feststellen, ob das Verb positiv oder negativ angegeben wurde, weil die Adresse

verb = dict_start + k * dict_entry_size

sein muss. Die dict_entry_size ist im Z-Code 9, 6 Bytes für 9 Z-Zeichen plus drei Bytes mit Flaggen.

Es gibt einen Sonderfall: Wenn es ein Wort an Adresse 32768 gibt, kann man positive und negative Werte nicht mehr unterscheiden, zum Beispiel:


    Wort        ...     'gehe'  'gelb' 'geld'   'gerd'  'gib'

    Adresse     ...     32752   32759   32768   32771   32790   ...

    ganze Zahl  ...     32752   32759  -32768  -32759  -32752   ...

Ist der zurückgegebene Wert nun 'gehe' oder 'gib'? Die Lib kann es nicht eindeutig feststellen und gibt die Warnung aus. Ein Sonderfall im Sonderfall ist die Zahl -32768, die negiert ebenfalls -32768 ist, weil man die positive Zahl 32768 in der Z-Maschine nicht als Zahl ausdrücken kann.

Die Warnung ist unschön, aber ohne Belang, wenn man grammar nicht verwendet, was glaube ich selten gemacht wird. I7 verwendet es nicht, lässt es aber als Einhänger für I6-Programmierer offen.

In Nicht-Debug-Builds sollte die Warnung verschwinden. Wenn das Spiel einmal groß genug ist, ist es mehr oder weniger Zufall, ob der Sonderfall eintritt. Alle neu eingefügten Objekte, Property-Einträge und Felder verschieben das Wörterbuch und die Meldung tritt sporadisch auf.

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