AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbankformat herausfinden

Ein Thema von iceget · begonnen am 26. Jan 2015 · letzter Beitrag vom 4. Feb 2015
Antwort Antwort
Seite 1 von 2  1 2      
iceget

Registriert seit: 26. Jan 2015
13 Beiträge
 
#1

Datenbankformat herausfinden

  Alt 26. Jan 2015, 19:01
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
Miniaturansicht angehängter Grafiken
44aff74abeef4edfc23a329abf2fdc50.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.034 Beiträge
 
Delphi 12 Athens
 
#2

AW: Datenbankformat herausfinden

  Alt 26. Jan 2015, 21:17
Das ist offenbar das Streamformat des VirtualTrees. Such mal in VirtualTrees.pas nach TBaseVirtualTree.SaveToStream .
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
iceget

Registriert seit: 26. Jan 2015
13 Beiträge
 
#3

AW: Datenbankformat herausfinden

  Alt 26. Jan 2015, 21:57
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

Geändert von iceget (26. Jan 2015 um 22:01 Uhr)
  Mit Zitat antworten Zitat
iceget

Registriert seit: 26. Jan 2015
13 Beiträge
 
#4

AW: Datenbankformat herausfinden

  Alt 26. Jan 2015, 22:09
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;
  Mit Zitat antworten Zitat
iceget

Registriert seit: 26. Jan 2015
13 Beiträge
 
#5

AW: Datenbankformat herausfinden

  Alt 26. Jan 2015, 22:12
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?
Angehängte Dateien
Dateityp: 7z virtualTrees.7z (195,1 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.034 Beiträge
 
Delphi 12 Athens
 
#6

AW: Datenbankformat herausfinden

  Alt 26. Jan 2015, 23:29
Hab die gesamte Datei diesem Post angehängt (7Zip komprimiert). Hilft Dir das weiter?
Wieso mir? Ich habe dir doch erklärt, wo dieses Format geschrieben wird und genau diese Methode findet man auch in der von dir angehängten Datei. Du musst schon selber analysieren, wie dort die einzeln Daten in die Datei geschrieben werden. Dann müsstest du auch in der Lage sein, diese in C# auszulesen. Das mag nicht unbedingt einfach sein, aber das VT-Streamformat ist wohl auch nicht als Austauschformat zwischen Delphi und C# gedacht.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Datenbankformat herausfinden

  Alt 27. Jan 2015, 07:30
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
iceget

Registriert seit: 26. Jan 2015
13 Beiträge
 
#8

AW: Datenbankformat herausfinden

  Alt 27. Jan 2015, 11:21
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

Geändert von iceget (27. Jan 2015 um 12:37 Uhr)
  Mit Zitat antworten Zitat
1122tra

Registriert seit: 28. Jan 2015
1 Beiträge
 
#9

AW: Datenbankformat herausfinden

  Alt 28. Jan 2015, 12:37
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?
2000 € + Märchensteuer ....

Gruß 1122
  Mit Zitat antworten Zitat
iceget

Registriert seit: 26. Jan 2015
13 Beiträge
 
#10

AW: Datenbankformat herausfinden

  Alt 4. Feb 2015, 10:48
Hey,

danke.

Hättest Du auch eine Kontaktemail für mich?

Danke
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz