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.
class CSerializer : end class
Für das Erzeugen eines CSerializer Objektes gibt es die folgende Funktion:
set serializer = NewSerializer( aSizeEstimate )
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.
serializer.SetSizeEstimate( aSizeEstimate )
Diese Funktion dient dem nachträglichen Setzen der Anzahl hinzuzufügender Elemente.
aSizeEstimate kann auch beim Konstruktor NewSerializer gesetzt werden.
serializer.OpenSubData aSizeEstimate
Ö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.
serializer.CloseSubData
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.
serializer.AddNL
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.
serializer.AddBool aBool serializer.AddNum aNumeric serializer.AddDate aDate serializer.AddStr aString
Serialisiert den entsprechenden Wert und fügt ihn als ein Element an den Seq-String des Serialisierers an.
serializer.AddFixStr aString
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!
serializer.AddStrArray aStringArray
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.
str = serializer.GetString( bClear )
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.
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.