Bezeichnung
WriteTable -- schreibt die Tabelle in eine Datei (V4.0)
Übersicht
WriteTable(id, table[, t])
Frühere syntax
WriteTable(id, table[, txtmode, nobrk])
Beschreibung
Dieser Befehl schreibt die durch table angegebene Hollywood-Tabelle in die durch id angegebene Datei. Die Tabelle wird mit dem Serialisierer serialisiert, der in den optionalen Argumenten angegeben werden kann. Es wird an der aktuellen Cursorposition in die Datei geschrieben, die Sie mit dem Befehl Seek() ändern können. In Dateien geschriebene Tabellen können später mit dem Befehl ReadTable() wieder in Hollywood-Tabellen geladen werden.

Dieser Befehl ist vollständig rekursiv. Ihre Tabelle kann beliebig viele Untertabellen enthalten. Zusätzlich kann die Tabelle sogar Hollywood-Funktionen enthalten. Siehe unten für ein Beispiel.

WriteTable() unterstützt mehrere optionale Argumente. Vor Hollywood 9.0 mussten diese als optionale Parameter übergeben werden (siehe oben). Seit Hollywood 9.0 wird jedoch empfohlen, die neue Syntax zu verwenden, die ein einzelnes optionales Tabellenargument hat, das verwendet werden kann, um ein oder mehrere optionale Argumente an WriteTable() zu übergeben.

Die folgenden Tabellenfelder werden von diesem Befehl erkannt:

Adapter:
Dieser Tabellen-Tag kann verwendet werden, um den Serialisierer anzugeben, der zum Exportieren der Hollywood-Tabelle verwendet werden soll. Dies kann der Name eines externen Serialisierer-Plugins (z.B. xml) oder einer der folgenden integrierten Serialisierer sein:

Default:
Verwendet den Standard-Serialisierer von Hollywood. Dadurch werden die Tabellendaten in das JSON-Format serialisiert. Beachten Sie, dass der Name dieses Serialisierers zwar behauptet, der Standardname zu sein, dies jedoch nicht der Fall ist. Aus Kompatibilitätsgründen verwendet WriteTable() standardmäßig den Inbuilt Serialisierer (siehe unten). Wenn Sie möchten, dass WriteTable() den JSON-Serialisierer verwendet, müssen Sie ihn explizit anfordern, indem Sie Adapter auf Default setzen.

Inbuilt:
Verwendet den (alten) Legacy-Serialisierer von Hollywood. Dadurch wird die Tabelle in ein benutzerdefiniertes, proprietäres Format serialisiert. Dies ist das Format, das WriteTable() seit Hollywood 4.0 verwendet und aus Kompatibilitätsgründen immer noch der Standard-Serialisierer ist. Er wird jedoch nicht mehr empfohlen, da dieser Serialisierer Daten ausgibt, die nicht in einem für Menschen lesbaren Format vorliegen. Die Verwendung des JSON-Serialisierers ist eine viel bessere Wahl.

Wenn Adapter nicht angegeben ist, wird standardmäßig der Adapter verwendet, welcher mit dem Befehl SetDefaultAdapter() gesetzt wurde. Beachten Sie, dass dieser Standardadapter aus Kompatibilitätsgründen nicht Default, sondern Inbuilt ist. Siehe oben für eine Erklärung.

TextMode:
Bei der Verwendung von Hollywoods älterem Serialisierer, der immer noch der Standard ist, kann dieses Argument auf True gesetzt werden, um WriteTable() anzuweisen, binäre Daten als Text zu exportieren. Beachten Sie, dass der Text auch dann nicht in einem für Menschen lesbaren Format vorliegt, wenn Sie diesen Tag auf True setzen. Wenn Sie die Tabelle in menschenlesbaren Text serialisieren möchten, verwenden Sie den JSON-Serialisierer (siehe oben). Voreingestellt ist False.

NoLineBreak:
Wenn der Tag TextMode auf True gesetzt wurde, fügt WriteTable() zur besseren Lesbarkeit automatisch nach jeweils 72 Zeichen Zeilenumbrüche ein. Wenn Sie das nicht möchten, setzen Sie NoLineBreak auf True. In diesem Fall werden keine Zeilenumbrüche eingefügt. Beachten Sie, dass dieser Tag nur den (alten) Legacy-Serialisierer von Hollywood betrifft. Es hat keine Auswirkungen auf andere Serialisierer. Voreingestellt ist False. (V6.1)

UserTags:
Dieser Tag kann verwendet werden, um zusätzliche Daten anzugeben, die an Serialisierer-Plugins übergeben werden sollen. Wenn Sie diesen Tag verwenden, müssen Sie ihn auf eine Tabelle mit Schlüssel-Wert-Paaren setzen, die die zusätzlichen Daten enthalten, die an Plugins übergeben werden sollen. Siehe Benutzer-Tags für Details. (V10.0)

Mode:
Dieser Tag kann verwendet werden, um den für die Operation zu verwendenden Serialisierungsmodus festzulegen. Er verwendet standardmäßig den Serialisierungsmodus, der mit SetSerializeMode() festgelegt wurde. Siehe SetSerializeMode für Details. (V10.0)

Options:
Dieser Tag kann verwendet werden, um die für den Vorgang zu verwendenden Serialisierungsoptionen festzulegen. Standardmäßig werden die Serialisierungsoptionen verwendet, die mit SetSerializeOptions() festgelegt wurden. Siehe SetSerializeOptions für Details. (V10.0)

SrcEncoding:
Dieser Tag kann verwendet werden, um die Zeichencodierung der Quelle anzugeben. Dies ist standardmäßig die Standard-Zeichencodierung der Zeichenkettenbibliothek, wie sie von SetDefaultEncoding() festgelegt wird. Siehe SetDefaultEncoding für Details. (V10.0)

DstEncoding:
Dieser Tag kann verwendet werden, um die Zielzeichencodierung anzugeben. Dies ist standardmäßig die Standard-Zeichencodierung der Zeichenkettenbibliothek, wie sie von SetDefaultEncoding() festgelegt wird. Siehe SetDefaultEncoding für Details. (V10.0)

Eingaben
id
Datei, in die geschrieben werden soll
table
Tabelle, welche in die Datei geschrieben wird
t
optional: Tabelle mit weiteren Argumenten (siehe oben) (V9.0)
Beispiel
mytable = {1, 2, 3, 4, 5,
  "Hello World",
  x = 100, y = 150,
  subtable = {10, 9, 8, 7},
  mulfunc = Function(a, b) Return(a*b) EndFunction
}

OpenFile(1, "table.json", #MODE_WRITE)
WriteTable(1, mytable, {Adapter = "default"})
CloseFile(1)

OpenFile(1, "table.json", #MODE_READ)
newtable = ReadTable(1, {Adapter = "default"})
CloseFile(1)

Print(newtable[0], newtable[5], newtable.x, newtable.y,
      newtable.subtable[0], newtable.mulfunc(9, 9))
Der obige Code schreibt die Tabelle mytable in die Datei "table.json". Danach öffnet er die Datei "table.json" erneut und liest die Tabelle wieder in Hollywood ein. Die importierte Tabelle wird in der Variablen newtable gespeichert. Schließlich greifen wir auf die neu importierte Tabelle zu und geben einige ihrer Daten auf dem Bildschirm aus. Die Ausgabe des obigen Codes lautet "1 Hello World 100 150 10 81".

Navigation zeigen