Bezeichnung
DIRECTORY -- bindet ein gesamtes Verzeichnis im Applet oder Programm ein (V8.0)
Übersicht
@DIRECTORY id, dir$[, table]
Beschreibung
Diese Präprozessor-Anweisung kann verwendet werden, um das gesamte in dir$ angegebene Verzeichnis in Ihr Applet oder Programm einzubinden, wenn Sie Ihr Skript kompilieren. Auf diese Weise können Sie beim Kompilieren Ihres Skripts eine Vielzahl von Dateien bequem in Ihr Applet oder Programm verlinken, da Sie nur eine zusätzliche Zeile zu Ihrem Skript anstelle von einzelnen Zeilen für jede Datei hinzufügen müssen.

Wenn Sie @DIRECTORY verwenden, müssen Sie den Befehl GetDirectoryEntry() verwenden, um auf einzelne Dateien und Unterverzeichnisse zuzugreifen, die in dem Verzeichnis gespeichert sind, das Sie mit Ihrem Applet oder Ihrem Programm verknüpft haben. Siehe unten für ein Beispiel. Falls Sie Ihr Skript nur mit dem Hollywood-Interpreter ausführen, gibt GetDirectoryEntry() die Zeichenkette zurück, die Sie an das Skript übergeben haben, sodass das Skript unabhängig davon identisch funktioniert, ob Sie es als Skript mit dem Hollywood-Interpreter ausführen oder wenn Sie es als Applet oder Programm kompiliert haben. Siehe GetDirectoryEntry für Details.

Diese Präprozessor-Anweisung akzeptiert auch ein optionales Tabellenargument, mit dem weitere Optionen konfiguriert werden können. Die folgenden Tags werden derzeit vom optionalen Tabellenargument unterstützt:

Recursive:
Wenn dieser Tag auf True gesetzt ist, werden in @DIRECTORY alle Dateien in den Unterverzeichnissen von dir$ ebenfalls eingebunden. Dies ist die Standardeinstellung. Setzen Sie den Wert auf False, wenn Sie nicht möchten, dass @DIRECTORY auch Dateien und Verzeichnisse in Unterverzeichnisse berücksichtigen soll.

Link:
Setzen Sie dieses Feld auf False, wenn dieses Verzeichnis beim Kompilieren Ihres Skripts nicht mit Ihrem Programm/Applet verknüpft werden soll. Dieses Feld ist standardmäßig auf True eingestellt, was bedeutet, dass das Verzeichnis mit Ihrem Programm/Applet verknüpft wird, wenn sich Hollywood im Kompilierungsmodus befindet.

Beachten Sie, dass @DIRECTORY nicht nur alle Dateien und Unterverzeichnisse in dir$ in Ihr Applet oder Programm einbindet, sondern auch ein Verzeichnisobjekt erstellt, das dann mit allen Befehlen verwendet werden kann, die Verzeichnisobjekte unterstützen, z.B. NextDirectoryEntry() und RewindDirectory(). Es ist sogar möglich, alle Dateien und Unterverzeichnisse zu durchlaufen, die über @DIRECTORY mit Ihrem Skript verknüpft sind. Siehe unten für ein Beispiel.

Beachten Sie schließlich, dass nur Datei-/Verzeichnisnamen, -größen und der tatsächliche Inhalt der Dateien mit Ihrem Applet oder Programm verknüpft werden. Dateiattribute wie Schutzbits, Datumsstempel und Kommentare werden nicht verknüpft. Wenn Sie also versuchen sie abzufragen, werden stattdessen einige Standardwerte angezeigt.

Wenn Sie zur Laufzeit Verzeichnisse öffnen möchten, verwenden Sie bitte den Befehl OpenDirectory().

Siehe auch CloseDirectory() und MonitorDirectory().

Eingaben
id
ein Wert, der verwendet wird, um dieses Verzeichnis später im Code zu identifizieren
dir$
das Verzeichnis, das Sie mit Ihrem Applet oder Programm verknüpfen möchten
table
optional: eine Tabelle mit weiteren Optionen (siehe oben)
Beispiel
@DIRECTORY 1, "data"
LoadBrush(1, GetDirectoryEntry("data/title.png"))
Der obige Code zeigt, wie Sie alle Dateien und Unterverzeichnisse im Verzeichnis data mit Ihrem Applet oder Programm verknüpfen und dann die Datei title.png aus diesem Verzeichnis in Pinsel 1 laden. Beachten Sie, dass das Skript nicht als Applet oder Programm kompiliert wurde. LoadBrush() lädt die Datei einfach aus data/title.png. Falls das Skript als Applet oder Programm kompiliert wurde, wird die Datei title.png jedoch direkt aus dem Applet oder Programm geladen, da sie mit diesem verknüpft wurde.


@DIRECTORY 1, "data"

Function p_DumpDirs(d$, indent)
    Local handle
    If d$ <> ""
        handle = OpenDirectory(Nil, GetDirectoryFile(1, d$))
    Else
        handle = 1
    EndIf
    Local e = NextDirectoryEntry(handle)
    While e <> Nil
        If e.Type = #DOSTYPE_DIRECTORY Then e.size = 0
        NPrint(RepeatStr(" ", indent) .. IIf(e.type = #DOSTYPE_FILE,
            "File:", "Directory:") .. " " .. e.name .. " " .. e.size
            .. " " .. HexStr(e.flags) .. " " .. e.time)
        If e.Type = #DOSTYPE_DIRECTORY Then p_DumpDirs(FullPath(d$,
            e.name), indent + 4)
        e = NextDirectoryEntry(handle)
    Wend
    If GetType(handle) = #LIGHTUSERDATA Then CloseDirectory(handle)
EndFunction

p_DumpDirs("", 0)
Der obige Code zeigt, wie alle Dateien und Verzeichnisse in einem Verzeichnis rekursiv ausgegeben werden, das mit dem Applet oder Programm verknüpft wurde.

Navigation zeigen