Laden...

Text-Datenbank einer Software auslesen und beschreiben, aber wie?

Erstellt von iceget vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.652 Views
I
iceget Themenstarter:in
20 Beiträge seit 2011
vor 9 Jahren
Text-Datenbank einer Software auslesen und beschreiben, aber wie?

Hallo liebe Community,

habe folgendes Problem:
Ich muss für ein älteres Programm (Windows XP) eine Datenbank auslesen sowie in diese schreiben das diese Software diese wieder lesen kann.
Nun die Frage: wie macht man das grundsätzlich? Also das man die vorhandene Datenbank ausliest, und diese dann Byte für Byte mit C Sharp wieder speichert?

Im Anhang ein Beispiel wie diese Datenbank aussieht (XXXX sowie Y:YY sind die eigentlichen Daten, hab diese nur anonymisiert).

Wie geht man das normalerweise an? Leider wurde das Programm schon laange ists her programmiert, und der Sourcecode ist nicht mehr vorhanden.
Es geht dabei um einen Musikplayer (selbst gestrickt) und dessen Datenbank.

Mir würde es nur darum gehen wie man das angeht, sowas zu erreichen.

Vielen Dank

Lg

2.223 Beiträge seit 2005
vor 9 Jahren

hallo iceget,

wenn du wirklich keinerlei Informationen über die DB oder ein mögliches Format hast,
dann bedeutet das ein wenig manuelle Arbeit.

Deine Aufgabe wird dann sein, das mögliche Format aus der Datei ab zuleiten.
Entweder anhand von den vorhanden Daten in der Datei und den im Programm angezeigten Daten.

Oder durch erzeugung von neue Einträgen und einer nachgelagerten Analysiert der veränderten Datei.

und sobald man meint das alles Versanden zu haben,
dreht man den Spiess um und ändert die Datei manuell und überprüft die eigenen änderungen mit dem Programm.

mit den so gesammelten Informationen und einem gescheiten Test Framework, ist dann die Nachimplementation nur noch ein Fleissarbeit.

Viele Grüße
Lars

16.834 Beiträge seit 2008
vor 9 Jahren

Das ist ja mehr oder minder das klassische Reverse Engineering.
Wenn das eine eigene Software ist, dann sieht es hier rechtlich auch unbedenklich aus. Wenn das eine fremde Software ist, dann ist man (meist) sehr schnell in teufels Küche und bewegt sich auf sehr sehr dünnem Eis.

Ein Schema F gibt es hier nicht.
Lars hat einige wichtige Punkte hier genannt.

Wie man bei so einer Sache vorgeht; oft versucht man herauszufinden, ob es irgendwelche Gemeinsamkeiten mit Standard-Datenbanken gibt o.ä.
Es kann gut sein, dass dahinter eine Datenbank steckt, dessen Dateiendung einfach verändert wurde, damit die Datei nicht von irgendeinem anderen Programm per Default gefunden/geöffnet wird und man so an die Daten kommt.

I
iceget Themenstarter:in
20 Beiträge seit 2011
vor 9 Jahren

Hallo,

danke für eure antworten.

Mittlerweile habe ich den SourceCode über den ehemaligen Programmierer erhalten. Ich weiß nun auch um welches Dateiformat es sich handelt:

Und zwar wurde hier in Delphi mit TBaseVirtualTree gearbeitet (eine Standard - Plugin).

Ich habe in einem Delphi Forum erfahren das es sich um folgendes handelt:

Das ist offenbar das Streamformat des VirtualTrees.

Irgendwie sollte durch TBaseVirtualTree.SaveToStream der Stream (also die Datei) geschrieben sein.

Ich hab hier mal das gesamte virtualTrees Projektfile angehängt.

Habt ihr eine Ahnung wie ich aus diesem das Format bestimmen und in C# umsetzen kann? Wie macht man das in der Regel mit C# solche Streams zu schreiben?

DANKE euch!

Lg iceget

3.511 Beiträge seit 2005
vor 9 Jahren

Moin,

komme ursprünglich aus der Delphi Ecke und kenne die Komponente so ein bisschen. Der Code des Trees hilft dir erstmal bedingt weiter. Der Tree serialisiert per Default nur seine Struktur und mehr nicht. Einfach im Code nach "SaveToStream", "WriteNode", "WriteChunk" suchen. Die Struktur selber ist recht "einfach". Interessant werden die Daten, denn die werden erst bei der Serialisierung ermittelt. Es gibt das Event OnSaveNode (oder so ähnlich). Da bekommt man den Stream zugeschmissen und kann alles reinklatschen was man möchte. Bei dem gegenteiligen Event muss man dann selber die Daten wieder aus dem Stream pro Node lesen. Der gezeigte Quellcode verrät dir also nur, wie man die Struktur ermitteln kann, aber nicht die Daten die dahinterstecken. Den Code brauchst du auch, sonst wird es Rätselraten.

View Glück.

Gruß
Khalid

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)