Geschrieben um 21:57 am 04.07.2005 | Zitat | Editieren | Löschen | |
Mitglied Baby Gumby Beiträge: 8 | Hallo mal wieder! Mit dieser Library... Release 1 / Serial number 050703 / Inform v6.30 Library 6/11 SX Standard interpreter 1.0 (1F) / Library serial number 040227 Offizielle deutsche Inform-Library, Release 22, Serial 050212 ...diesem Compiler... Inform 6.30 for Linux (27th Feb 2004) ...und diesem Sourcecode...
...bekomm ich folgende Ausgabe: Zitat:
Pilotenkanzel Cockpit Du siehst hier eine Tür.
Sie bewegt sich keinen Millimeter.
Sie bewegt sich keinen Millimeter. Mach ich was falsch? Ciao, Eike |
Geschrieben um 08:19 am 05.07.2005 | Zitat | Editieren | Löschen | |
Mitglied Prof Gumby Beiträge: 634 | Die Lib:
6/11? Sieh an, sieh an.
Diese Konstante bestimmt, ob die Möglichkeit, den letzten Zug ungeschehen zu machen im Abspann erwähnt wird. Ist sie mit dem Wert Null definiert, so lautet ie Frage nach dem Erreichen des Spielendes: 339900Ob dieser Zusatz ausgegeben wird oder nicht - das Rückgängigmachen funktioniert auf jeden Fall. Du musst diese Konstante auch nicht unbedingt definieren - wenn du es nicht tust definiert die Lib sie mit einem Wert von 1. In der deutschen Lib 22 muss man diese Konstante auf einen Wert setzten. In der Original-Lib muss man diese Konstante (mit irgendeinem Wert) definieren, damit Undo erwähnt wird. Wieso ist das geändert worden? Und wieso bedeutet DEATH_MENTION_UNDO == 0 (also gleich falsch), dass Undo erwähnt wird?
Das verlangt die Lib meines Erachtens nicht. Statt dem nicht in der Lib definierten AMUSINGWD werden nun AMUSING1WD und AMUSING2__WD verwendet, die beide in german.h definiert werden. Eike:
Edit: Hier stand eben noch was anderes. Ich habe gerade erst aus dem Titel ersehen, was du eigentlich wolltest und keine schlaue Antwort aus der Hüfte darauf :-( Nochmal Edit: Bei mir funktioniert dein Code, wie er soll:``` Release 1 / Serial number 050705 / Inform v6.30 Library 6/10 (deutsch) SX Pilotenkanzel Cockpit Du siehst hier eine Tür.
Du entdeckst an der Tür nichts Spezielles.
Sie bewegt sich keinen Millimeter.
Es bewegt sich keinen Millimeter.
Release 1 / Serial number 050705 / Inform v6.30 Library 6/10 (deutsch) SX Standard interpreter 1.0 (4F) / Library serial number 991120(bp) Offizielle deutsche Inform-Library, Release 22, Serial 050212
|
Geschrieben um 10:07 am 05.07.2005 | Zitat | Editieren | Löschen | |
Mitglied Dr Gumby Beiträge: 275 | Zitat:
Standard interpreter 1.0 (1F) / Library serial number 040227 Offizielle deutsche Inform-Library, Release 22, Serial 050212 Entschuldige, aber das ist NICHT die offizielle deutsche Library. Die ist nämlich immer noch auf dem Stand von 6/10, nicht 6/11. Ich tippe mal ganz stark, dass du deine deutsche Library mit der aktuellen englischen Library überschrieben hast, dann kommt nämlich genau das dabei raus. Leider, leider enthält die deutsche Library auch erhebliche Änderungen an der parserm.h und anderen internationalen Teilen der Library, sonst wäre dieses ganze changing_gender-Zeug nämlich kaum umzusetzen gewesen. Wenn du die originale parserm.h der deutschen Library also mit der parserm.h der Library 6/11 ersetzt, dann funktioniert changing_gender logischerweise nicht mehr, weil du den meisten Code dafür praktisch gelöscht hast. Ich kann von sowas nur abraten, changing_gender wird nicht das Einzige sein, was dann nicht mehr funktioniert... |
Geschrieben um 10:37 am 05.07.2005 | Zitat | Editieren | Löschen | |
Mitglied Prof Gumby Beiträge: 634 | ChrisW:
Aha, daher also die verlockende Aussicht auf 6/11 (de). Dieses Problem ist ja bereits öfters aufgetreten. Natürlich sollte man die englischen und die deutschen Libs (und deren Versionen) getrennt lagern, aber es ist vielen wohl nicht bewusst, dass sich von Deutsch zu Englisch mehr ändert als die Definitionen in German.h/English.h und GermanG.h/Grammar.h. Letzten Endes war es wohl eine Illusion von Graham Nelson, zu denken, dass man allen sprachspezifischen Code in zwei der zehn Dateien packen kann und dann jeder Sprache den erweiterten englischen Parser überstülpen kann. Und da jede Lib wohl Änderungen in den anderen, vermeintlich gemeinsamen Dateien macht, ist die Entscheidung, die Lib-Dateien wie im Original zu nennen, unglücklich. Um dieses Problem zu vermeiden sehe ich im Moment zwei Möglichkeiten: Umbenennen der Dateien der deutschen Lib. Jede der Dateien würde einen eigenen Namen bekommen, der sie von der englischen Lib unterscheidet, etwa
oder so. Aus jedem Dateinamen wäre nun ersichtlich, dass die Datei zur deutschen Lib gehört, es gibt keine Überschneidungen mit den englischen Libs 6/10 oder 6/11 und schlampige Autoren können so alle dateien gefahrlos in einem Verzeichnis ablegen. Quelltexte müssen nur die drei Include-Statements ändern. Eine ähnliche Nomenklatur könnte für übersetzte Library Contributions verwendet werden. Weiterer Vorteil: Man müsste beim Aufruf von Inform +language_name=German nicht setzen. Prüfung, welche Lib eingebunden wurde. Dazu wird in jeder eingelesenen Datei eine Konstante definiert, die es nur in der deutschen Lib gibt und die idealerweise auch noch die Release angibt, etwa ganz oben in parser.h:
Ähnlichen Code gibt es in jeder der eingebundenen Dateien. Die letzte Datei, die eingebunden wird, ist GermanG.h, also eine sprachspezifische Datei. Dort würde man die Konstanten prüfen, etwa so:
So bliebe alles beim alten, aber fehlerhafte Programme mit falsch eingebundenen Libs würden gar nicht erst erzeugt. |
Geschrieben um 11:49 am 05.07.2005 | Zitat | Editieren | Löschen | |
Mitglied Baby Gumby Beiträge: 8 | Hallo! Martin:
Ich weiss nicht, wie ich es geschafft hatte, das nochmal zu verbocken (ein ähnliches Problem hatte ich ja schon mal). Ich hab also nochmal die Library runtergeladen, mal wieder in ein leeres Verzeichnis entpackt, und siehe da: Es klappt! [DEATH_MENTION_UNDO] Martin: In der deutschen Lib 22 muss man diese Konstante auf einen Wert setzten. Genau. Das meinte ich. Ich muss diese Konstante (mit irgendeinem Wert) definieren, sonst schlägt das Kompilieren fehl.
...das war wohl ein Problem meines Englisch-Deutsch-Gemisches, da musste ich die auch definieren, um kompilieren zu können. [raus-editiert] Ciao, Eike |
Geschrieben um 12:02 am 05.07.2005 | Zitat | Editieren | Löschen | |
Mitglied Baby Gumby Beiträge: 8 | Hallo! ChrisW: Entschuldige, aber das ist NICHT die offizielle deutsche Library. Die ist nämlich immer noch auf dem Stand von 6/10, nicht 6/11. Ich tippe mal ganz stark, dass du deine deutsche Library mit der aktuellen englischen Library überschrieben hast, dann kommt nämlich genau das dabei raus. Darauf kann ich mit einem klaren Jein antworten... Das Problem ist wohl ein Linux-/Unix-spezifisches: Ich habe mir ein Verzeichnis angelegt, und nur die Dateien der deutschen Library reingelegt. Das Problem war, dass die Dateinamen (zumindest in der tgz-Verpackung) durchgehend klein geschrieben sind. Ich habe in meinen Versuchen aber immer "Parser" und "VerbLib" eingebunden. Da Linux (im Gegensatz zu Windows) zwischen Gross- und Kleinbuchstaben in Dateinamen unterscheidet, wurden nicht die deutschen Dateien eingebunden, sondern die (mit dem Compiler in einem Standard-Verzeichnis mitinstallierten) englischen. Die Dateien der deutschen Lib sollten (wenn man sie nicht wie oben vorgeschlagen vollständig anders benennt) exakt dieselben Namen haben wie die der Original-Library. Ciao, Eike |
Geschrieben um 13:23 am 05.07.2005 | Zitat | Editieren | Löschen | |
Mitglied Dr Gumby Beiträge: 275 | Eike:
Oh. Also daran lags. Das stimmt natürlich, auch wenn ich mich frage, warum in der englischen Lib ausgerechnet diese beiden Dateinamen groß geschrieben sind und alle anderen konsequent klein... Tschuldige, dass ich dir da solche Library-Rumpfriemelei unterstellt habe. Das Szenario kam mir nur so bekannt vor, weil ich das tatsächlich mal ausprobiert habe, einfach mal um zu schauen, wieviel dann noch funktioniert. Martins zweite Idee, mit den Konstanten, gefällt mir ausgesprochen gut. Und dürfte ja auch nicht schwer sein, sowas einzubauen. |
Geschrieben um 09:30 am 06.07.2005 | Zitat | Editieren | Löschen | |
Mitglied Master Gumby Beiträge: 93 | Martin: Aha, daher also die verlockende Aussicht auf 6/11 (de). Ja, das wäre schon was - die einzelnen Änderungen sind jedoch sehr aufwändig und erfordern wahrscheinlich, dass man den gesamten Code per Hand durchgeht und vergleicht. Viel Arbeit. Ich habe mir das vor einiger Zeit angesehen und bin doch erschrocken, wie viel sich in den letzten Jahren in der deutschen Lib geändert (=weiterentwickelt) hat. Aber: Das Ziel ist noch gesteckt - die Lib 6/11 (de) wird eines Tages kommen! Ciao, Max. |