Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Datenpaket erstellen (https://www.delphipraxis.net/136707-datenpaket-erstellen.html)

TheMiller 6. Jul 2009 17:17


Datenpaket erstellen
 
Hallo,

ich würde gerne eine Datensicherungsoption in meinem Programm anbieten. Ich habe 4 XML-Dateien und ein paar weitere kleinere Dateien. Insgesamt rund 100kb. Nun würde ich gerne bei der Sicherung alle Dateien in eine verschmelzen lassen und sie bei der Rücksicherung wieder trennen und einzeln erstellen. Also ähnlich wie bei ZIP|RAR etc...

Natürlich gibt's da Komponenten. Aber ich sträube mich immer ein bisschen, mich von so vielen Komponenten abhängig zu machen.

Hat jemand von euch eine Idee, wie ich vorgehen könnte?

Ich dachte mir, ich öffne jede Datei in einem Stream und hänge diese an den Backupdateistream dran. Danach speicher ich die Datei. Aber wie bekomme ich die Dateien dann wieder korrekt auseinander?

Vielen Dank im Voraus

mkinzler 6. Jul 2009 17:19

Re: Datenpaket erstellen
 
Speichere vor der eigentlichen datei immer einen Infoblock (Name, Länge usw.)

TheMiller 6. Jul 2009 17:21

Re: Datenpaket erstellen
 
Und dann mit RegExpr nach den Blocks suchen und diese extrahieren?

Das wäre eine Möglichkeit. Oder geht es noch einfacher? Naja, es wird wohl das flexibelste sein. Damit kenne ich mich auch aus...

mkinzler 6. Jul 2009 17:22

Re: Datenpaket erstellen
 
Müsste ohne gehen. Dank des Blocks ist die Größe der datei ja bekannt. Nach dem Lesen müsste dann direkt der nächste Infoblock kommen.

TheMiller 6. Jul 2009 17:25

Re: Datenpaket erstellen
 
Richtig gute Idee. Da hätte ich aber auch selbst drauf kommen müssen :wink:

Vielen Dank

TheMiller 6. Jul 2009 18:23

Re: Datenpaket erstellen
 
Hey, ich bin's wieder ;)

Was eignet sich einigermaßen dazu, den Inhalt dieser Datei unkenntlich zu machen (zu verschlüsseln). Es soll vorgebeugt werden, dass User die Datei in einem Editor öffnen und auslesen können.

Es soll nicht hyper-sicher sein, nur halt eben unkenntlich.

Danke nochmal...

mkinzler 6. Jul 2009 18:36

Re: Datenpaket erstellen
 
Den gesamten stream verschlüsseln. Z.B. mit Hilfe von DEC

TheMiller 6. Jul 2009 18:40

Re: Datenpaket erstellen
 
Hm, das ist ja auch wieder eine Komponente. Ich dachte an ein kleines, simples Verfahren, welches ich selbst schreiben könnte. Btw: Ich habe von diesem Thema noch keine Ahnung ;)

Soll ich einen neuen Thread aufmachen?

mkinzler 6. Jul 2009 18:41

Re: Datenpaket erstellen
 
Zitat:

Soll ich einen neuen Thread aufmachen?
Ja wäre besser
Zitat:

DEC ist keine Komponente sondern eine Bibliothek.

TheMiller 6. Jul 2009 18:44

Re: Datenpaket erstellen
 
Gut, dann bedanke ich mich an dieser Stelle nochmal.

Eine Bibliothek kann ich ohne weiteres Einbinden. Trotzdem lerne ich dann nicht - aber das an anderer Stelle und zu einem späteren Zeitpunkt!

Bye

TheMiller 7. Jul 2009 15:58

Re: Datenpaket erstellen
 
Ich hab da dochnochmal eine Frage. Diesmal betrifft sie wieder das Datenpaket direkt.

Ich möchte es jetzt auslesen, habe eine While-Schleife erstellt, die mir immer 4 Zeichen zurückgibt. Nun habe ich folgende Steuerzeichen mit bestimmten Inhalt wie z.b:

Code:
/* FILE: settings.ini */
So, jetzt kam ich noch auf die Idee, einen Record in dieser Backup-Datei zu speichern. Ich habe jetzt das Problem, dass ich nicht weiß, wie ich einen Stream bis zu einer bestimmten Stelle (zB "*/") auslesen kann.

Wenn ich immer nur 4 Zeichen lese kann mir ja folgendes passieren:

Code:
Zeichen 12-16: xe *
Zeichen 16-20: / */
Das Trennzeichen wurde somit getrennt und ich kann nicht mehr damit anfagen.

Hier nochmal meine 4-Zeichen-nacheinander-auslesen-Routine

Delphi-Quellcode:
procedure TfrmBackup.RestoreBackup(ms: TMemoryStream);
var
  s: String;
  i: Integer;
begin
  ms.Seek(0, soBeginning);
  i:=0;
  while not (i > ms.Size) do
  begin
    s:='';
    ms.Seek(i, soFromBeginning);
    SetLength(s, 4);
    ms.ReadBuffer(s[1], length(s));
    ShowMessage(s);
    i:=i+4;
  end;
  ms.Free;
end;
Bitte gebt mir einen kleinen Tipp...

franktron 7. Jul 2009 16:30

Re: Datenpaket erstellen
 
Guck mal hier im Forum ich hab male ein Klasse dafür geschrieben

TheMiller 7. Jul 2009 16:40

Re: Datenpaket erstellen
 
Hm... ein Tipp würde mir schon reichen. Ich möchte nicht für alles eine Klasse oder Komponente haben... Außerdem finde ich sie nicht ;)

franktron 7. Jul 2009 16:55

Re: Datenpaket erstellen
 
Hier erstmal den Link http://www.delphipraxis.net/internal...ght=filesystem
Und man sollte den Buffer lieber so Deklarieren s : Array[0..3] of Byte;

TheMiller 7. Jul 2009 17:13

Re: Datenpaket erstellen
 
Vielen Dank.

Werde mir das mal zu Gemüte führen. Muss aber erst mal ins Training.

Bis dann / demnächst


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:17 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 by Thomas Breitkreuz