Alte Library gesucht
Alexander (HH)
- sonstiges
0 Tom0 Tom0 Alexander (HH)
Moin Moin!
Ich schlag mich gerade mit ein paar Dateien rum, in denen Eingabemasken für ein Windows-Programm abgelegt sind. Die Inhalte hab ich mittlerweile einigermaßen identifiziert, und das Format kann ich mittlerweile auch lesen und in XML übersetzen.
Das Besondere: Die Daten sind nicht als Binärmüll gespeichert, sondern als codierter Text. Und ich bin mir 100% sicher, dass ich dieses bekloppte Dateiformat schonmal irgendwo anders gesehen habe, ich weiß nur nicht mehr wo. Ich vermute, dass sich die Programmierer eine alte (oder vor 10 oder 20 Jahren neue) C- oder C++-Library geschnappt haben, die ihre Daten einigermaßen sicher serialisieren und deserialisieren konnte.
Die Dateien sehen ungefähr so aus:
:23013
\[38
1
1\.930853127233340e+014
:23058
\[1
:23016
\[0
\]\]:32808
\[0
\]0
0
"":32808
\[0
\]:23026
\[0
\]1
92
1
:23032
\[0
1
\]:23044
\[0
1
\]11
"default.MEN"11
"default.tbb"1
1
10
10
1
1
50331903
33488896
0
1
"\x20"1
"\x20"1
9
"M
oin\x20Moin"1
"\x20"1
"\x20"0
:23056
\[0
1
\]1
"\x20"1
1
0
:23060
\[1
0\.000000000000000e+000
1
\]:23060
\[1
0\.000000000000000e+000
1
\]1
:32808
\[0
\]:32808
\[0
\]@0
:32842
\[0
\]0
0
0
""5
"7.6.4"5
"7.6.4":23016
\[1
1031
\]:32808
\[0
\]1023
:32808
\[6
:30623
\[3
42
"WIN01/-13/0/0/0/400/0/0/0/0/3/2/1/34/Arial"117440512
13
201326591
201326591
201326591
117440256
1
50331903
0
0
16777215
0
\]:30623
\[3
42
"WIN01/-13/0/0/0/4
00/0/0/0/0/3/2/1/34/Arial"117440512
13
201326591
67174399
201326591
117440256
1
65535
0
0
16777215
0
\]:30623
\[3
42
"WIN01/-13/0/0/0/400/0/0/0/0/3/2/1/34/Arial"117440512
13
201326591
201326591
201326591
117440256
1
33488896
0
0
16777215
0
\]:30623
\[3
42
"WIN01/-13/0/0/0/400/0/0/0/0/3/2/1/34/Arial"117440512
13
201326591
201326591
201326591
117440256
0
117440256
0
0
16777215
0
\]:30623
\[3
42
"WIN01/-13/0/0/0/400/0/0/0/0/3/
2/1/34/Arial"117440512
13
201326591
201326591
201326591
117440256
0
100598015
0
0
16777215
0
\]:30623
\[3
42
"WIN01/-13/0/0/0/400/0/0/0/0/3/2/1/34/Arial"117440512
13
201326591
201326591
201326591
117440256
0
65280
0
0
16777215
0
\]\]:23016
\[6
1
1
1
1
1
1
\]2147483663
2147483663
0
""0
0
1
0
0
\]
Zeilenumbrüche (im DOS-Format) trennen Werte voneinander, außer in Strings. Dort werden sie vollkommen ignoriert.
Vor jedem String steht ein Integer mit dessen Länge, der String selbst ist in "" verpackt und zudem noch mit ein paar Escape-Sequenzen versehen: \r \n \t \ " wie von C gewohnt, ebenso \x und zwei Hex-Ziffern. Zusätzlich steht [ für { und ] für }. Nach dem Ende eines Strings steht kein Zeilenumbruch, der nächste Wert folgt ohne jedes Trennzeichen auf das abschließende ". String und Länge müssen zusammenpassen, sonst verabschiedet sich die Entwicklungsumgebung (Blome Designer) mit einem fürchterlichen Absturz, obwohl ein ordentlicher Parser das String-Ende auch ohne die Längenangabe finden können müßte -- meiner kann das jedenfalls. ;-) Die Umbrüche in den Strings sind scheinbar vollkommen willkürlich.
Dann gibt es noch @ gefolgt von einem Integer, dessen Bedeutung mir im Moment noch nicht klar ist.
Booleans werden als Integer 0 und 1 gespeichert.
Die Entwicklungsumgebung hat ihre Ursprünge in den finsteren DOS-Zeiten, wurde über 16-bittiges Windows bis zum 32-Bit-Windows geschleppt, die Library dürfte ähnlich alt sein.
So, die große Frage: Kennt jemand das Format und insbesondere die Library, die dieses Format ausspuckt und wieder einliest?
Anschlußfragen: Was bedeutet das @ in diesem Format? Gibt es eine Regel, wann Umbrüche in Strings eingefügt werden?
Alexander
Hello,
sieht aus, wie ANSI-Escape-Sequenzen.
Das ist quasi ein Cooked-Filter für den Screen (gewesen).
Es gibt auch eine C-Lib dafür... Ich suche schon :-)
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
sieht aus, wie ANSI-Escape-Sequenzen.
Das ist quasi ein Cooked-Filter für den Screen (gewesen).Es gibt auch eine C-Lib dafür... Ich suche schon :-)
Ich bin ganz sicher, dass es die noch gibt. Ich habe letztes Jahr im Oktober noch damit herumgespielt.
Hinweise hier unter "Ansi-Steuersequenzen"
http://cybop.berlios.de/tutorials/linux_console/ansi_steuersequenzen.pdf
Beim guten alten DOS musste man die ANSI.Sys dafür laden. Die hat sich als Device-Treiber in den Screen geklemmt.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Moin Moin!
sieht aus, wie ANSI-Escape-Sequenzen.
Das ist quasi ein Cooked-Filter für den Screen (gewesen).
Neee, definitiv nicht. Wir reden hier schon über ein GRAFISCHES User-Interface. ANSI-Sequenzen kenne ich aus DOS-Zeiten gut genug. Vor allem fehlen für ANSI-Sequenzen jede Menge <ESC>s vor den eckigen Klammern.
Es gibt auch eine C-Lib dafür... Ich suche schon :-)
ANSI ist die falsche Fährte, solltest Du danach suchen, lass es sein.
Alexander