Die vd_ Dateien sind entladene Datenbank Tabellen.

Kodiert ist die Datei in Latin1, wobei es vermutlich das Westeuropäische Windows /cp1250/ ist. Zeilenumbruch ist /CR+LF/.

Sie bestehen aus einem Header und mehreren Tabellen mit Inhalt. Zur Trennung zwischen Header und Tabellen, und zwischen den Tabellen untereinander, wird eine Zeile mit Strichen verwendet. Das Ende einer vd_ Datei ist eine Zeile die "XXX" enthält.

Lange Zeilen werden umgebrochen in dem in der *Folgezeile* als erste Zeichen "\\" steht. Man kann also beim Einlesen erst sagen ob die aktuelle Zeile komplett ist wenn man die Folgezeile gelesen hat.

Aufbau des Headers

Beispiel:

EX-IM N C:\PROGRA1\ETS2V12\ets2.vd_ K ETS2 Product Administration K D 2010-09-10 08:05:17 V 5.10 H virtual_device ----

Zeile EX-IM ist die fixe Kennung des Datenbestandes und immer so vorhanden.
Zeile N gibt den Namen der Datei an mit der sie gespeichert wurde.
Zeile K sind Kommentare.
Zeile D enthält das Datum der Erzeugung der Datei.
Zeile V ist die Version, vermutlich des Dateninhalts und nicht des Datenformats.
Zeile H gibt den Typ des Datenbestandes. Hier wurde bisher "virtual_device" und "project" gesehen.

Aufbau einer Tabelle

Eine Tabelle besteht wieder aus einem Header und den Daten. Der Header beginnt mit einem T Satz, jeder Datensatz beginnt mit einem R Satz. Die Tabelle wird mit einer Trennzeile oder mit der Datei-Ende Kennung "XXX" beendet.

Beispiel:

T 3 manufacturer C1 T3 1 4 N MANUFACTURER_ID C2 T3 3 50 Y MANUFACTURER_NAME C3 T3 1 4 Y ADDRESS_ID R 1 T 3 manufacturer 1 Siemens R 2 T 3 manufacturer 2 ABB R 3 T 3 manufacturer 7 Busch-Jaeger Elektro ----

Die Zeilen des Tabellen-Headers sind so zu verstehen:

Zeile T, z.B.: T 3 manufacturer
Es handelt sich hier um die 3te Tabelle im Datenbestand mit dem Namen "manufacturer".

Zeile Cx, z.B.: C2 T3 3 50 Y MANUFACTURER_NAME
Jede Zeile beschreibt eine Spalte der Tabelle. C2 T3bedeutet die 2te Spalte der 3ten Tabelle. Die Zahl 3 nach dem T3 gibt den Datentyp an. Folgende Datentypen sind bisher bekannt:

1 - 4 Byte Integer
2 - 2 Byte Small-Integer
3 - String
4 - Unbekannt
5 - Double
6 - Unbekannt
7 - Unbekannt
8 - Byte Array

Die nächste Zahl, 50 im Beispiel, gibt die Länge des Feldes in Bytes an.

Danach kommt "Null erlaubt", also ob die Spalte leer sein darf. N bedeutet dass die Spalte immer einen Inhalt haben muss. Y oder N sind gültige Werte.

MANUFACTURER_NAME ist der Name der Spalte.

Zeile Rx, z.B.: R 1 T 3 manufacturer
Der 1te Datensatz der 3ten Tabelle mit dem Namen "manufacturer". Es folgen so viele Zeilen wie die Tabelle im Header Spalten definiert hat. Enthält eine Datenzeile auf den ersten beiden Stellen "\\", so ist sie eine Folgezeile der vorhergehenden Zeile, und gehört an die vorhergehende Zeile angehängt. Die Zeilen sind nach 80 Zeichen umgebrochen.