WriteTable(id, table[, t])
WriteTable(id, table[, txtmode, nobrk])
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:xml) oder einer
der folgenden integrierten Serialisierer sein:
Default: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: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: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: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:
Mode:
Options:
SrcEncoding:
DstEncoding:
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".