![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как распаковать Zip из строки в строку.
w666w © (2006-12-01 17:51:00)Уважаемые мастера. Подскажите, как распаковать Zip из строки в строку без промежуточной работы с файлами? Долго бьюсь над этим вопросом и не нашел решения.
Заранее спасибо за помощь!
Eraser (2006-12-05 16:54:00) [1]> [7] Sha © (05.12.06 00:59)
вообще боландовский zlib заметномедленнее оригинального, который можно скачать по вашей ссылке.
Sha (2006-12-05 00:59:00) [2]Да, и в [5] я б не стал бы try-finally использовать
и, кстати, при использовании Борландовского ZLib.pas
ближе к теме будет что-нибудь вроде
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
NewPtr: pointer;
NewLen: integer;
begin
s:=Edit1.Text;
CompressBuf(pointer(s),Length(s),NewPtr,NewLen);
SetString(s,pchar(NewPtr),NewLen);
FreeMem(NewPtr);
DecompressBuf(pointer(s),Length(s),0,NewPtr,NewLen);
SetString(s,pchar(NewPtr),NewLen);
FreeMem(NewPtr);
Edit2.Text:=s;
end;
Sha (2006-12-05 00:07:00) [3]... или так:
s:=ZCompressStr(Edit1.Text);
Edit2.Text:=ZDecompressStr(s);
если зайти в гости на http://www.base2ti.com/zlib.htm
ORMADA (2006-12-04 06:48:00) [4]не знаю чё там с злибом мучаешь
просто довольно там
procedure PackStream(var OutMemoryStream: TMemoryStream);
var
UnknownPtr: pointer;
NewSize: integer;
begin
OutMemoryStream.Position := 0;
try
CompressBuf(OutMemoryStream.Memory, OutMemoryStream.Size, UnknownPtr, NewSize);
OutMemoryStream.Clear;
OutMemoryStream.Write(UnknownPtr^, NewSize);
OutMemoryStream.Position := 0;
finally
FreeMem(UnknownPtr, NewSize);
end;
end;
procedure UnPackStream(var sSrc: TMemoryStream);
var
UnknownPtr: pointer;
NewSize: integer;
begin
sSrc.Position := 0;
try
DeCompressBuf(sSrc.Memory, sSrc.Size, 0, UnknownPtr, NewSize);
sSrc.clear;
sSrc.Position := 0;
sSrc.Write(UnknownPtr^, NewSize);
sSrc.Position := 0;
finally
FreeMem(UnknownPtr, NewSize);
end;
end;
w666w (2006-12-04 00:04:00) [5]С Zlib голову сломишь напрочь. Суть проблемы: web сервер создает архив zip содержащий 1 текстовый файл. Необходимо распаковать этот архив, полученный через HTTP и делать разбор этого файла... Есть ПРОСТЫЕ и понятные методы, не требующие изучения ZLib API?
Юрий Зотов (2006-12-03 20:44:00) [6]Именно ZIP? Если устроит ZLib, то он есть в Delphi. Пакует и распаковывает из потока в поток.
w666w (2006-12-03 20:27:00) [7]Да, именно работа с zip в памяти, без использования промежуточных файлов (без обращения в винту вообще). Нито не встречал такую либу (бесплатную) ?
Может быть есть способ доработать какой-либо существующий компонент для такой работы? В каком направлении копать?
Virgo_Style (2006-12-02 07:49:00) [8]Не то что бы я долго бился над этим вопросом, но что, собственно, нужно - понять не смог.
Полагаю, тебе нужен либо компонент/библиотека, реализующие работу с zip в памяти, либо писать свою реализацию того же самого.