4.3 Einbinden von Datendateien

Standardmäßig verknüpft der Linker von Hollywood automatisch alle mit den Präprozessor-Anweisungen deklarierten externen Datendateien in das ausführbare Programm oder dem Applet. Somit wird z.B. die Datei test.jpg automatisch mit Ihrem ausführbaren Programm oder Applet verknüpft:

 
@BGPIC 1, "test.jpg"
WaitLeftMouse
End

Wenn Sie dies nicht möchten, können Sie den Tag Link setzen, welches von allen Präprozessor-Anweisungen für Dateien mit False akzeptiert wird. In diesem Fall wird die von der Präprozessor-Anweisung verwendete Datei nicht eingebunden. Der Code sieht dann so aus:

 
@BGPIC 1, "test.jpg", {Link = False}
WaitLeftMouse
End

Manchmal können Sie auch Dateien verknüpfen, die von Ihrem Skript zur Laufzeit in Ihr ausführbares Programm oder Ihr Applet geladen werden. Betrachten Sie zum Beispiel den folgenden Code:

 
LoadBGPic(1, "test.jpg")
LoadBrush(1, "title.png")
DisplayBGPic(1)
DisplayBrush(1, #CENTER, #CENTER)
WaitLeftMouse
End

Standardmäßig werden test.jpg und title.png nicht mit Ihrem ausführbaren Programm oder Applet verknüpft, da sie nicht mit einer Präprozessor-Anweisung deklariert wurden, sondern stattdessen zur Laufzeit mit LoadBGPic() und LoadBrush() geladen wurden. Dennoch ist es möglich, test.jpg und title.png mit Ihrem ausführbaren Programm oder Applet zu verlinken. Dies kann entweder mit der Compiler-Option ‘-linkfiles’ oder der Präprozessor-Anweisung @LINKER erreicht werden.

Sie müssen eine Datenbankdatei an ‘-linkfiles’ übergeben. Die Datenbankdatei ist eine einfache UTF-8 Textdatei, die eine Liste von Dateien enthält, die in das Applet oder ausführbaren Programm eingebunden werden, die von Hollywood kompiliert wird. Sie müssen nur eine Datei pro Zeile in der Datenbankdatei angeben. Die Dateiangabe muss mit der Angabe übereinstimmen, die Sie in Ihrem Skript verwenden.

Wenn Sie das Konsolenargument ‘-linkfiles’ verwenden, müssen Sie eine Datenbankdatei übergeben. Die Datenbankdatei ist eine einfache UTF-8-Textdatei, die eine Liste von Dateien enthält, die in das Applet oder dem ausführbare Programm eingebunden werden sollen, das von Hollywood kompiliert wird. Sie dürfen in der Datenbankdatei nur eine Datei pro Zeile angeben. Die Dateiangabe muss mit der Angabe identisch sein, die Sie in Ihrem Skript verwenden. Wenn zum Beispiel der Befehl LoadBrush(1, "data/menu.png") in Ihrem Skript steht und Sie die Datei data/menu.png in ihrem Applet/Programm einbinden möchten, müssen Sie sie in die Datenbank schreiben, die Sie an ‘-linkfiles’ übergeben. Aber Sie müssen die gleichen Angaben verwenden, d.h. Sie müssen data/menu.png verwenden! Die Angabe von MyScripts/CoolGame/data/menu.png in der Datenbank funktioniert nicht! Die Angabe, die in der Linkdatei-Datenbank und im Skript verwendet wird, muss dasselbe sein, da Hollywood sonst nicht feststellen kann, welche Datei geladen werden muss.

Um die Dateien test.jpg und title.png mit unserem ausführbaren Programm oder Applet zu verknüpfen, muss die Datenbankdatei, die wir an ‘-linkfiles’ übergeben, so aussehen:

 
test.jpg
title.png

Das ist alles! Der Hollywood-Linker verknüpft dann test.jpg und title.png mit dem ausführbaren Programm oder dem Applet und der Aufruf von LoadBGPic() und LoadBrush() im oben vorgestellten Skript lädt test.jpg und title.png jeweils direkt aus dem ausführbaren Programm oder Applet statt aus einer externen Quelle.

Dasselbe kann mit der Präprozessor-Anweisung @LINKER erreicht werden. Der einzige Unterschied besteht darin, dass die zu verknüpfenden Dateien nicht in einer externen Datenbankdatei an Hollywood übergeben werden müssen. Sie müssen stattdessen direkt in Ihrem Skript als Teil der Präprozessor-Anweisung @LINKER gespeichert werden. Alle anderen Regeln sind die gleichen wie bei ‘-linkfiles’. Wenn Sie ‘-linkfiles’ nicht wie oben beschrieben verwenden möchten, können Sie Ihrem Skript auch die folgende Zeile hinzufügen und dasselbe erreichen:

 
@LINKER {Files = {"test.jpg", "title.png"}}

Sie können dem Tag Files der Präprozessor-Anweisung @LINKER beliebig viele Dateien hinzufügen, die mit Ihrem Applet oder dem ausführbaren Programm verknüpft werden sollen. Stellen Sie einfach sicher, dass die Pfadangabe der Dateien, die Sie an @LINKER übergeben, mit der Pfadangabe übereinstimmt, die später im Code verwendet wird, damit Hollywood die verknüpften Dateien den einzelnen im Skript verwendeten Dateien korrekt zuordnen kann.

Wenn Sie viele Dateien mit Ihrem Applet oder Ihrem ausführbaren Programm verknüpfen müssen, können Sie alle diese Dateien in einem Verzeichnis ablegen und dann Hollywood anweisen, alles in diesem Verzeichnis mit dem Applet oder dem ausführbaren Programm zu verknüpfen. Dies geschieht mit der Präprozessor-Anweisung @DIRECTORY. In der folgenden Zeile wird beispielsweise angegeben, dass Hollywood alle Dateien im Verzeichnis data mit dem Applet oder dem ausführbaren Programm verknüpft:

 
@DIRECTORY 1, "data"

Wenn Sie dies getan haben, können Sie mit dem Befehl GetDirectoryEntry() auf die einzelnen Dateien im Verzeichnis data zugreifen. Um beispielsweise die Dateien data/test.jpg und data/title.png mit LoadBGPic() und LoadBrush() zu laden, würden Sie folgenden Code schreiben:

 
LoadBGPic(1, GetDirectoryEntry(1, "data/test.jpg"))
LoadBrush(1, GetDirectoryEntry(1, "data/title.png"))

Die Präprozessor-Anweisung @DIRECTORY ist sehr flexibel, da sie die gesamte Verzeichnisstruktur in einem Applet oder einem ausführbaren Programm archiviert. Somit ist es möglich, dieses archivierte Verzeichnis (und alle seine Unterverzeichnisse!) so zu durchlaufen, als wären sie normal auf dem Datenträger. Siehe DIRECTORY für Details.


Navigation zeigen