Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi datein verschmelzen (https://www.delphipraxis.net/89868-datein-verschmelzen.html)

any_key 7. Apr 2007 14:16


datein verschmelzen
 
moin
ich suche ne möglichkeit mit der ich mehrere datein (auf jeden fall mehr als zwei) in eine datei zusammen binden und später wieder auseinander nehmen kann
dazu hab ich jetzt das hier gefunden: http://www.dsdt.info/tipps/?id=133
aber wenn ich darüber mehrere datein zusammenbinden will geht das nicht mehr

mkinzler 7. Apr 2007 14:21

Re: datein verschmelzen
 
http://www.freebyte.com/hjsplit/

any_key 7. Apr 2007 14:26

Re: datein verschmelzen
 
so wie ich die seite jetzt verstanden hab ist das ein programm mit dem man große datein aufsplitten kann und später wieder zusammenfügen...
aber ich suche eine möglichkeit in meinem eigenen programm verschiedene datein zu binden

Christian Seehase 7. Apr 2007 14:30

Re: datein verschmelzen
 
Moin Any_key,

Du müsstest nur alle Dateien durchgehen, jeweils die Länge wegschreiben, dann den Inhalt.
Zum Auslesen dann die Länge auslesen, und den danach folgenden Inhalt.

Delphi-Quellcode:
var
  fsOUT : TFileStream;
  fsIN  : TFileStream;
  i     : integer;
  sBuf  : string;
  dwSize : DWORD;

begin
  // Schreiben
  fsOUT := TFileStream.Create(Gesamtdatei,...);
  try
    for i := 0 to slFileList.Count-1 do begin
      fsIN := TFileStream.Create(slFileList[i],....);
      try
        fsOUT.Write(fsIN.Size,4);
        fsOUT.CopyFrom(fsIN,0);
      finally
        FreeAndNil(fsIN);
      end;
    end;
  finally
    FreeAndNil(fsOUT);
  end;
  // Lesen
  fsIN := TFileStream(GesamtDatei,....);
  try
    for i := 0 to slFileList.Count-1 do begin
      fsIN.Read(dwSize,4);
      sBuf := StringOfChar(#00,dwSize);
      fsIN.Read(sBuf[1],dwSize);
      fsOUT := TFileStream.Create(slFileList[i],...);
      try
        fsOUT.Write(sBuf[1],dwSize);
      finally
        FreeAndNil(fsOUT);
      end;
    end;
  finally
    FreeAndNil(fsIN);
  end;
end;
Das nur als Beispiel.
Ich hoffe es stimmt alles so, denn ich habe es direkt hier reingeschreiben.

any_key 7. Apr 2007 14:40

Re: datein verschmelzen
 
so ganz verstehe ich das noch nicht :?
könntest du das evtl noch ne bissschen genauer erläutern?

bernau 7. Apr 2007 14:55

Re: datein verschmelzen
 
Zitat:

Zitat von any_key
ich suche ne möglichkeit mit der ich mehrere datein (auf jeden fall mehr als zwei) in eine datei zusammen binden und später wieder auseinander nehmen kann

Warum nimmst du nicht eine ZIP-Komponenten und speicherst deine Dateien in eine ZIP-Datei. Hat noch den Vorteil, daß die Datei kleiner wird als die Summe der Programme.

Gerd

any_key 7. Apr 2007 14:59

Re: datein verschmelzen
 
ich will darüber eine art installation laufen lassen
d.h. ich will die datein die verwendet werden direkt in die .exe reinbringen und wenn diese ausgeführt wird hat man direkt die konfig usw dabei

mkinzler 7. Apr 2007 15:15

Re: datein verschmelzen
 
Dann scau dir mal http://www.jrsoftware.org/isinfo.php an

Christian Seehase 7. Apr 2007 18:33

Re: datein verschmelzen
 
Moin Any_key,

fsOUT ist immer der FileStream, in den geschrieben wird, fsIN der aus dem gelesen wird.
slFileList ist eine StringListe, in der die Pfade der Dateien enthalten sind, die zusammengefasst, bzw. wieder ausgelesen werden.

Um die Dateien zu "verschmelzen" öffnest Du jetzt die Zieldatei, und gehst dann, der Reihe nach alle Dateien durch, die Du in einer speichern willst.
Als erstes wird die Grösse der Datei gespeichert (fsIN.Size), dann der Inhalt (CopyFrom(fsIN,0)). Durch die 0 bei CopyFrom wird die gesamte Datei kopiert.

Beim Lesen wird der Ablauf dann umgekehrt:
fsIN ist jetzt die Datei, die alle anderen zusammengefasst enthält, und fsOUT ist für das Speichern der ausgelesenen Dateien auf der Platte zuständig.
Hier liest man zuerst die Grösse des folgenden Abschnittes (dwSize), reserviert sich einen Buffer (sBuf), und liest die Datei dann dort ein, und speichert sie anschliessen.

inherited 7. Apr 2007 18:41

Re: datein verschmelzen
 
http://www.dsdt.info/tutorials/myarchiv/


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:52 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