Einzelnen Beitrag anzeigen

gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#25

Re: String mit gzip (ent)zippen

  Alt 2. Apr 2009, 08:58
Zitat von Infect:
So, nun habe ich endlich herausgefunden, warum das mit deiner gzdbuf-Unit bisher nicht funktionierte. Ich habe der Funktion gzb_init als Buffer ein dynamisches Array übergeben, kein statissches wie in deinem Beispiel. Und dynamische Arrays beginnen ja mit dem Index 0 und nicht wie bei dir mit 1.

Was müsste ich ändern, damit das ganze auch mit dynamischen Arrays klappt? Auf jeden Fall bin ich nun wieder einen Schritt weiter.
Hier das angepaßte Demoprogramm für vsd.gz, der interessante Teil sollte unabhängig von dynamisch/statissch sein, wenn Dein Puffer mit Index 0 beginnt.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  ibuf: array of byte;
  f: file;
  gz: gzbuf;
  i: integer;
  s: string;
begin
  assignfile(f,'vsd.gz');
  system.reset(f,1);
  setlength(ibuf,5000);
  blockread(f,ibuf[0],1242);
  gz := gzb_init(pBytef(@ibuf[0]),1242); // dies ist der interessante Teil
  s := '';
  while not gzb_eof(gz) do begin
    i := gzb_getc(gz);
    if i<0 then break;
    if (i>0) and (i<256) then s := s+char(i);
  end;
  richedit1.Text := s;
end;
Gruß Gammatester
  Mit Zitat antworten Zitat