From: Michael Flad,BL.maus
To: Stefan Müller
Receive-Date: Sonntag, 22-Dez-96  09:55:14
Creation-Date: Dienstag, 17-Dez-96  20:30:00
Message-ID: 199612172030.p42165@bl.maus.de
Date: 17.12.1996 20:30
References: 199612151225.p33253@mk2.maus.de
Subject: ReadArgs.
Attributes: MAUS_STAT "Nicht_gelesen: 19.12.1996 19:02"
UserFlags: WriteAccess ReadAccess ViewAccess
GlobalFlags: Exported

Hi,

SM> Bei ReadArgs() hast Du auch nach jedem Mal den Buffer zurückgesetzt?
SM> Steht in den Autodocs als Fehlerquelle. 

natürlich ... aber ich hab den Fehler gefunden, ist echt
fast unglaublich, vor allem, daß es bisher so selten Probs
damit gab ;)

Ich mach mit dem ganzen eine ScriptSprache und hab dazu
einmal ein Template in dem alle Befehle selbst stehen, wenn
ich dann also ne Befehlszeile Parse, dann wird der
entsprechende Befehl ja gefunden (ist für ein Adventure also
sowas wie GETITEM/K). Wenn ich dann den Befehl rausgefunden
hab (erkennbar daran, welcher Pointer des übergebenen Array
nicht mehr auf meinem Default Wert steht) parse ich den
nochmal mit seiner gesamten Syntax (z.B.
GETITEM/K,ITEMNAME/K) und mein großer Fehler war, zu
Glauben, daß ReadArgs nur Fehler zurückliefert, wenn z.B.
bei einem /K das zusätzliche Keyword das angegeben werden
müssten z.B. eben GETITEM=Flasche fehlt, ich dachte nicht,
daß es auch fehlschlägt, wenn nicht der komplette zu
parsende String aufgelöst werden kann (das konnte bei mir ja
nieee der Fall sein). Leider hat ReadArgs natürlich gar
nichts zurückgesetzt und die ganze Sache hat fast
anstandslos funktioniert, obwohl ich auf Speicherbereiche
die von ReadArgs bereits wieder freigegeben wurden,
zugegriffen habe, nur meine DebugPrintfs haben halt evtl.
zufällig gerade den Bereich überschrieben ;)

Naja, jetzt hab ich das Prob gelöst, in dem ich einfach
jeden Befehl mit der kompletten Syntax abparse, muß ich halt
für jeden Befehl jedesmal die komplette Syntax abchecken,
aber hauptsache es geht.

   Bye

     Michael

--------------------------------------

