Forum moved to if-forum.org
Autor Nachricht
<  Geschlechtsumwandlung gescheitert
Eike
BeitragVerfasst am: Mo, 4 Jul 2005 - 20:57  Antworten mit Zitat
Neuling
Neuling


Anmeldungsdatum: 23.03.2005
Beiträge: 14

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

Constant DEATH_MENTION_UNDO 0;! verlangt die Lib anscheinend?
Constant AMUSING__WD 0;      ! verlangt die Lib anscheinend?

Include "Parser";
Include "VerbLib";

[ Initialise;
   location = Cockpit;
];

Object Cockpit "Pilotenkanzel"
   with description "Cockpit",
   has light neuter;

Object -> "Tür"
   with name 'tuer' 'tor' neuter 'grausam' 'schrecken',
   changing_gender,
   dekl 9,
   has female static openable;

Include "germang.h";


...bekomm ich folgende Ausgabe:

Zitat:
Release 1 / Serial number 050703 / Inform v6.30 Library 6/11 SX

Pilotenkanzel
Cockpit

Du siehst hier eine Tür.

>zieh tuer
Sie bewegt sich keinen Millimeter.

>zieh tor
Sie bewegt sich keinen Millimeter.


Mach ich was falsch?

Ciao,
Eike
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Martin
BeitragVerfasst am: Di, 5 Jul 2005 - 7:19  Antworten mit Zitat
Experte
Experte


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

Die Lib hat folgendes geschrieben:
Inform v6.30 Library 6/11

6/11? Sieh an, sieh an.

Code:
Constant DEATH_MENTION_UNDO 0;! verlangt die Lib anscheinend?

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:

*** Du bist nun leider tot. ***

Möchtest Du einen NEUSTART, ein vorher gespeichertes Spiel LADEN, mit ZURÜCK den letzten Zug rückgängig machen oder das ENDE?


Ob 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?

Code:
Constant AMUSING__WD 0;      ! verlangt die Lib anscheinend?

Das verlangt die Lib meines Erachtens nicht. Statt dem nicht in der Lib definierten AMUSING__WD werden nun AMUSING1__WD und AMUSING2__WD verwendet, die beide in german.h definiert werden.

Eike hat folgendes geschrieben:
Mach ich was falsch?

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

Release 1 / Serial number 050705 / Inform v6.30 Library 6/10 (deutsch) SX

Pilotenkanzel
Cockpit

Du siehst hier eine Tür.

>u tuer
Du entdeckst an der Tür nichts Spezielles.

>zieh tuer
Sie bewegt sich keinen Millimeter.

>zieh tor
Es bewegt sich keinen Millimeter.

>version
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


Allerdings ist meine Lib wohl eine andere. Die Release-Daten sind dieselben, aber ich habe die Biplattform-Lib verwendet. (Die eine Seriennummer von 1999 hat.) Es ist die letzte offizielle, Release 22 , die ich in Februar von http://www.textfire.de/archiv heruntergeladen habe.
_________________
Every silver lining has a cloud.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ChrisW
BeitragVerfasst am: Di, 5 Jul 2005 - 9:07  Antworten mit Zitat
Abenteurer
Abenteurer


Anmeldungsdatum: 26.08.2002
Beiträge: 278
Wohnort: Leipzig

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


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...
_________________
"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: Di, 5 Jul 2005 - 9:37  Antworten mit Zitat
Experte
Experte


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

ChrisW hat folgendes geschrieben:
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.

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

parser.h        -> de_pars.h
  linkpla.h     ->   de_link.h
  parserm.h     ->   de_parsm.h
    english.h   ->    de_text.h
verblib.h       -> de_verb.h
  verblibm.h    ->  de_verbm.h
grammar.h       -> de_gram.h
  infix.h       ->   de_infix.h

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

Constant DE_LIB_610_22_PARSER;

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

Ifndef DE_LIB_610_22_PARSER;
Message Error "Es wurde nicht die korrekte datei parser.h
    eingebunden. Bitte überprüfen, dass die Datei parser.h zur
    deutschen Lib 6/10, Release 22 gehört.";
EndIf;

So bliebe alles beim alten, aber fehlerhafte Programme mit falsch eingebundenen Libs würden gar nicht erst erzeugt.
_________________
Every silver lining has a cloud.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Eike
BeitragVerfasst am: Di, 5 Jul 2005 - 10:49  Antworten mit Zitat
Neuling
Neuling


Anmeldungsdatum: 23.03.2005
Beiträge: 14

Hallo!

Martin hat folgendes geschrieben:
Die Lib hat folgendes geschrieben:
Inform v6.30 Library 6/11

6/11? Sieh an, sieh an.


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 hat folgendes geschrieben:

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.

Code:
Constant AMUSING__WD 0;      ! verlangt die Lib anscheinend?


...das war wohl ein Problem meines Englisch-Deutsch-Gemisches, da musste ich die auch definieren, um kompilieren zu können.

[raus-editiert]

Ciao,
Eike
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eike
BeitragVerfasst am: Di, 5 Jul 2005 - 11:02  Antworten mit Zitat
Neuling
Neuling


Anmeldungsdatum: 23.03.2005
Beiträge: 14

Hallo!

ChrisW hat folgendes geschrieben:

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
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ChrisW
BeitragVerfasst am: Di, 5 Jul 2005 - 12:23  Antworten mit Zitat
Abenteurer
Abenteurer


Anmeldungsdatum: 26.08.2002
Beiträge: 278
Wohnort: Leipzig

Eike hat folgendes geschrieben:
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.

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.
_________________
"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
mkalus
BeitragVerfasst am: Mi, 6 Jul 2005 - 8:30  Antworten mit Zitat
Wasserträger
Wasserträger


Anmeldungsdatum: 15.09.2002
Beiträge: 105
Wohnort: Kempten (Allgäu)

Martin hat folgendes geschrieben:

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.
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