![]() |
Datenbankformat herausfinden
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo liebe Community,
ich muss mich in den SourceCode einer Delphi-Programmierung einlesen. Es geht darum das eine Datenbank geschrieben wird, und ich diese jedoch mittels C# auslesen / schreiben muss. Könnt ihr mir helfen? Ich bin leider in Delphi ein blutiger Anfänger. Damals habe ich Visual Basic programmiert, heute Visual C#. Nur mit Delphi... kenne ich mich nicht aus, und muss deswegen auch einlesen. Ich habe von dieser Datenbankdatei (die diese Anwendung erstellt hat) einen kleinen Auszug via HexEditor erstellt. XXX und YYY sind die eigentlichen Daten. Die Funktion die diese Struktur schreibt sieht wie folgt aus: Lesen: Node: PVirtualNode; NodeData: PArchivListData; TempNode: PVirtualNode; NodeDataArchiv: PArchivData; log: string; SRec: TSearchRec; ... WriteLN(DBChannel[0], 'Buffer Normal = ' + Buffer); WriteLN(DBChannel[0], 'Interpret = ' + Interpret); WriteLN(DBChannel[0], 'Titel = ' + Titel); ... Node := VSTArchivList.AddChild(VSTArchivList.RootNode); NodeData := VSTArchivList.GetNodeData(Node); ... NodeData.ValueType[0] := vtNumber; NodeData.ValueType[1] := vtPickString; NodeData.ValueType[2] := vtPickString; NodeData.ValueType[3] := vtPickString; NodeData.ValueType[4] := vtPickString; NodeData.ValueType[5] := vtPickString; NodeData.ValueType[6] := vtPickString; NodeData.ValueType[7] := vtPickString; NodeData.ValueType[8] := vtPickString; ... Schreiben: // Schreibe Dateistruktur VSTArchiv.LoadFromFile(Path + '\Archiv.dat'); except end; Node := VSTArchiv.AddChild(VSTArchiv.RootNode); NodeData := VSTArchiv.GetNodeData(Node); ... NodeData.ValueType[0] := vtPickString; NodeData.Value[0] := INIUpdateName; WriteLN(DBChannel[0], 'INIUpdateName = ' + INIUpdateName); NodeData.ValueType[1] := vtPickString; NodeData.Value[1] := CheckIfGroupExist(INIUpdateName); ... SaveArchiv Hoffe ihr könnt mir helfen! Vielen dank schonmal im Vorfeld! Lg iceget |
AW: Datenbankformat herausfinden
Das ist offenbar das Streamformat des VirtualTrees. Such mal in VirtualTrees.pas nach
Delphi-Quellcode:
.
TBaseVirtualTree.SaveToStream
|
AW: Datenbankformat herausfinden
Hallo! Danke für deine schnelle Antwort :)
Leider finde ich diesen Befehl nicht. Aber hab mir das jedoch weiter angesehen, folgendes kommt auch noch vor: procedure TFrmMain.VSTArchivSaveNode(Sender: TBaseVirtualTree; Node: PVirtualNode; Stream: TStream); var NodeData: PArchivData; size: integer; Buffer: string; begin NodeData := VSTArchiv.GetNodeData(Node); Buffer := NodeData.Value[0]; Size := Length(Buffer); Stream.Write(Size, SizeOf(Size)); Stream.Write(PChar(Buffer)^, Size); Buffer := NodeData.Value[1]; Size := Length(Buffer); Stream.Write(Size, SizeOf(Size)); Stream.Write(PChar(Buffer)^, Size); end; ... WriteLN(DBChannel[1], 'SaveToFile Prog 0 = ' + Path+ '\' + VSTArchiv.Text[TNode, 0] + VSTArchiv.Text[TNode, 1] + '.dat'); {$ENDIF} VSTArchivList.SaveToFile(Path + '\' + VSTArchiv.Text[TNode, 0] + VSTArchiv.Text[TNode, 1] + '.dat'); ... procedure VSTArchivListSaveNode(Sender: TBaseVirtualTree; Node: PVirtualNode; Stream: TStream); Hilft dir das bzgl. Analyse was weiter? Vielen Dank! lg |
AW: Datenbankformat herausfinden
procedure TVirtualTreeColumn.SaveToStream(const Stream: TStream);
var Dummy: Integer; begin with Stream do begin Dummy := Length(FText); WriteBuffer(Dummy, SizeOf(Dummy)); WriteBuffer(PWideChar(FText)^, 2 * Dummy); Dummy := Length(FHint); WriteBuffer(Dummy, SizeOf(Dummy)); WriteBuffer(PWideChar(FHint)^, 2 * Dummy); WriteBuffer(FWidth, SizeOf(FWidth)); WriteBuffer(FMinWidth, SizeOf(FMinWidth)); WriteBuffer(FMaxWidth, SizeOf(FMaxWidth)); Dummy := Ord(FStyle); WriteBuffer(Dummy, SizeOf(Dummy)); Dummy := FImageIndex; WriteBuffer(Dummy, SizeOf(Dummy)); Dummy := Ord(FLayout); WriteBuffer(Dummy, SizeOf(Dummy)); WriteBuffer(FMargin, SizeOf(FMargin)); WriteBuffer(FSpacing, SizeOf(FSpacing)); Dummy := Ord(FBiDiMode); WriteBuffer(Dummy, SizeOf(Dummy)); Dummy := Word(FOptions); WriteBuffer(Dummy, SizeOf(Dummy)); // parts introduced with stream version 1 WriteBuffer(FTag, SizeOf(Dummy)); Dummy := Cardinal(FAlignment); WriteBuffer(Dummy, SizeOf(Dummy)); // parts introduced with stream version 2 Dummy := Integer(FColor); WriteBuffer(Dummy, SizeOf(Dummy)); // parts introduced with stream version 6 if coUseCaptionAlignment in FOptions then begin Dummy := Cardinal(FCaptionAlignment); WriteBuffer(Dummy, SizeOf(Dummy)); end; end; end; |
AW: Datenbankformat herausfinden
Liste der Anhänge anzeigen (Anzahl: 1)
Hab die gesamte Datei diesem Post angehängt (7Zip komprimiert). Hilft Dir das weiter?
DANKE! PS ist es möglich diesen Stream auch unter C# 1:1 abzubilden? |
AW: Datenbankformat herausfinden
Zitat:
|
AW: Datenbankformat herausfinden
Tree und Austauschformat. Da würde sich ja wohl XML als Austauschformat anbieten. Sollte mit Delphi kein unüberwindbares hinternis sein und einfach zu realisieren als ein binäres Format neu in C# zu immportieren.
|
AW: Datenbankformat herausfinden
Danke für die Info!
Wenn ich das einem Entwickler in Auftrag geben würde, wie viel müsste ich zirka rechnen was mir diese Konvertierung kosten würde? Wer macht so etwas? Wen könnte ich Fragen? Ich würde also nur eine C# Funktion benötigen die dieses Datenbankfile handlen kann (erstellen, öffnen, bearbeiten). Vielen Dank |
AW: Datenbankformat herausfinden
Zitat:
Gruß 1122 |
AW: Datenbankformat herausfinden
Hey,
danke. Hättest Du auch eine Kontaktemail für mich? Danke |
AW: Datenbankformat herausfinden
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz