WaBis

walter.bislins.ch

Seq: Serializer API

Referenz : Serializer API | Parser API
Mit den Serialisierer-Funktionen des Seq-Moduls wird eine hierarchische Datenstruktur in einen Seq-String serialisiert zwecks Speicherung in einer Datei.

Für das Serialisieren muss ein CSerializer Objekt erzeugt werden. Mit Hilfe der Member-Funktionen dieses Objektes können Property-Werte von Objekten Serialisiert und in einem Seq-String gespeichert werden. Dieser Seq-String kann dann ausgelesen und in eine Date gespeichert werden.

CSerializer

class CSerializer
  :
end class

Für das Erzeugen eines CSerializer Objektes gibt es die folgende Funktion:

NewSerializer

set serializer = NewSerializer( aSizeEstimate )
aSizeEstimate: int
Anzahl der hinzuzufügenden Elemente dieser Hierarchiestufe oder 0
Return: CSerializer

Erzeugt ein CSerializer-Objekt. Wenn die Anzahl der hinzuzufügenden Elemente nicht bekannt ist, kann aSizeEstimate = 0 gesetzt werden. Dieser Wert dient nur der Performance-Optimierung. Die interne Datenstruktur des Serializers wird in jedem Fall automatisch der aktuellen Anzahl hinzugefügter Elemente angepasst.

aSizeEstimate kann auch nachträglich mit der Funktion SetSizeEstimate noch gesetzt werden.

SetSizeEstimate

serializer.SetSizeEstimate( aSizeEstimate )
serializer: CSerializer
aSizeEstimate: int
Anzahl der hinzuzufügenden Elemente dieser Hierarchiestufe

Diese Funktion dient dem nachträglichen Setzen der Anzahl hinzuzufügender Elemente.

aSizeEstimate kann auch beim Konstruktor NewSerializer gesetzt werden.

OpenSubData (Serializer)

serializer.OpenSubData aSizeEstimate
serializer: CSerializer
aSizeEstimate: int
Anzahl der hinzuzufügenden Elemente dieser Hierarchiestufe oder 0

Öffnet eine Sub-Struktur im Serialisierer, welche mit CloseSubData (Serializer) geschlossen werden muss. Die Anzahl Elemente der Sub-Struktur kann mit aSizeEstimate angegeben werden. Alle rekursiv serialisierten Elemente einer Sub-Struktur werden mit CloseSubData (Serializer) in einen einzigen Seq-String gewandelt, der als ein einziges hinzugefügtes Element zählt.

Es empfiehlt sich, für jedes zu serialisierende Objekt eine solche Sub-Struktur zu eröffnen. Damit wird die Objekt-Hierarchie im Seq-String abgebildet und beim Parsen wird nie über Objekt-Grenzen hinaus gelesen, selbst wenn die Datenstruktur geändert wird.

CloseSubData (Serializer)

serializer.CloseSubData
serializer: CSerializer

Schliesst eine offene Sub-Strukur. Alle Elemente seit dem zugehörigen Aufruf von OpenSubData (Serializer) werden zu einem einzigen Element in Seq-String-Format zusammengefasst und dem Serialisierer hinzugefügt.

AddNL

serializer.AddNL
serializer: CSerializer

Fügt ein Zeilenende in den Seq-String des Serialisierers ein. Dieses zählt als ein Element und dient nur der Strukturierung des Seq-Strings. Das Zeilenende wird beim Parsen ignoriert. Es empfiehlt sich, am Anfang eines jeden neuen zu serialisierenden Objektes ein Zeilenende einzufügen.

AddBool, AddNum, AddDate, AddStr

serializer.AddBool aBool
serializer.AddNum aNumeric
serializer.AddDate aDate
serializer.AddStr aString
serializer: CSerializer
aBool: bool
Ein Boolscher Wert (true oder false)
aNumeric: int, long, double
Ein numerischer Wert
aDate: date
Ein Datums-Wert
aString: string
Ein String

Serialisiert den entsprechenden Wert und fügt ihn als ein Element an den Seq-String des Serialisierers an.

AddFixStr

serializer.AddFixStr aString
serializer: CSerializer
aString: string
Ein String

Fügt den String aString als ein Element an den Seq-String des Serialisierers an. Die Länge des Strings wird im Gegensatz zu AddStr nicht mit gespeichert! Dieser String muss daher mit der Funktion GetFixStr gelesen werden!

AddStrArray

serializer.AddStrArray aStringArray
serializer: CSerializer
aStringArray: array of string

Fügt alle Strings des String-Array aStringArray als ein Element an den Seq-String des Serialisierers an. Der String-Array muss mit der Funktion GetStrArray geparst werden.

GetString

str = serializer.GetString( bClear )
serializer: CSerializer
bClear: bool
Wenn bClear = true ist, wird der interne Speicher des Serialisierers gelöscht.
return: string
Resultierender Seq-String

Setzt alle hinzugefügten Elemente zu einem Seq-String zusammen und gibt den resultierenden Seq-String zurück. Diese Funktion schliesst das Serialisieren einer Objekt-Hierarchie ab.

Wenn bClear = false ist, bleibt der interne Speicher weiterhin bestehen und kann weiter befüllt werden.

Empfehlung

Setze bClear = true, wenn der Serialisierer nach dem Aufruf von GetString erneut befüllt werden soll (von Grund auf neu befüllen).

Setze bClear = false, wenn der Serialisierer nach dem Aufruf von GetString nicht mehr benötigt wird oder später weitere Element hinzugefügt werden sollen.

Weitere Infos zur Seite
Erzeugt Freitag, 6. Januar 2012
von wabis
Zum Seitenanfang
Geändert Donnerstag, 9. Oktober 2014
von wabis