Autor Beitrag
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Mi 01.12.10 16:59 
Hi, ich hab Dateien die mit GZip komprimiert sind, und möchte diese als Stream auslesen (zwischenspeichern würde notfalls aber auch gehen, als Stream wärs mir aber lieber). Ich hab bisher versucht mit Abbrevia AbUnzipper zu arbeiten, aber irgendwie klappt das nicht, ich bekomme stets "Unhandled Archive Type". Wenn ich force Type und atGZip benutze, dann gibts zwar keine Fehlermeldung, aber der enthaltene Dateiname wird als "Unknown" zurückgegeben, und der Stream hat eine länge von 0.

Die Dateien haben die Dateiendung .dat

Hat jemand eine Funktionierende Lösung für GZip dekomprimierung, oder ein funktionierendes Beispiel für Abbrevia?

P.S. habe Turbo Delphi.

Schonmal danke fürs lesen ;)

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 01.12.10 18:22 
Bei Indy muss das dabei sein, denn Indy unterstützt diese Komprimierung bei der Datenübertragung.

TIdCompressorZLibEx oder so ähnlich gibt es. Genauer weiß ich es im Moment nicht, da müsste ich selbst nachschauen.

Für diesen Beitrag haben gedankt: Tilman
Tilman Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Mi 01.12.10 18:34 
Also die Komponente gibts schonmal, werde sie mir anschauen, danke! :zustimm:

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Tilman Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Do 02.12.10 18:40 
Es scheint zu funzen :) Vielen Dank nochmal! Hier ein kleines Stück Beispielcode für zukünftige Tester, wichtig ist dass der Ausgabestream mit Seek zurückgestezt werden muss, sonst bekommt man nur 0en zurück ^^ hatte daran gestern etwas geknabbert, aber gerade eben kam mir der Gedanke, und es hat geklappt =)

idcom = tIDCompressorZLibEx

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
  var
    pfad: string;
    datei: tFileStream;
    ausgabe: tMemoryStream;
    buffer: Byte;
    n: Integer;

begin
  pfad := 'c:\irgendwas';
  datei := TFileStream.Create(pfad,fmOpenRead);
  ausgabe := tMemoryStream.Create;
  idcomp.DecompressDeflateStream(datei,ausgabe);
  ausgabe.Seek(0,soFromBeginning);
  writeln(ausgabe.Size);
  for n := 0 to 500 do
    begin
      ausgabe.Read(buffer,1);
      write(buffer);
      write(',');
    end;

  ausgabe.Free;
  datei.Free;
end;

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)