AbUnZipper přes komponentu Abbrevia (Delphi)
Zdravím, dotaz.
Takto rozbalim z archivu zip soubor čti.txt na disk F a načtu bo komponenty memo
procedure TForm1.Button1Click(Sender: TObject);
begin
AbUnZipper1.BaseDirectory := 'F:\';
AbUnZipper1.FileName := 'F:\Test.zip' ;
AbUnZipper1.Password := 'heslo' ;
AbUnZipper1.ExtractFiles('čti.txt') ;
Memo1.Lines.LoadFromFile('F:\čti.txt');
ShowMessage('Done.') ;
end;
Je nějaky zpusob jak do dostat přimo do komponenty aníž by se rozbalil na disk?
Mělo by to být možné - Abbrevia by měla podporovat ukladani a načitani ze streamu. Pokud použiješ TMemoryStream, provede se rozpakovani do paměťového streamu a z memo to pak muzes ze streamu nacist pomoci Memo.Lines.LoadFromStream()
No tak si s tým hrají už druhy den
Přdat data do archivu umim.
Vytahnout je s archivu take umím.
Takto načtu soubor do streamu a pak uložim do souboru.
var
mymemory : TMemoryStream;
begin
mymemory := TMemoryStream.Create;
try
mymemory.LoadFromFile('F:\test.txt');
AbZipper1 := TAbZipper.Create(nil);
AbZipper1.OpenArchive('F:\Test.zip');
AbZipper1.AddFromStream('test1.txt', mymemory);
finally
FreeAndNil(mymemory);
end;
Ale dostat ho s archivu ven do streamu se nedaří
var
mymemory : TMemoryStream;
begin
mymemory := TMemoryStream.Create;
AbUnZipper1.FileName := 'F:\Test.zip' ;
AbUnZipper1.ExtractToStream('test.txt', mymemory);
Memo1.Lines.LoadFromStream(mymemory);
end;
Chybu to žadnou nevyhazuje ale memo je prazdne.
Skús pred načítaním streamu nastaviť pozíciu na začiatok:
Dik funguje