Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];

Вниз

Как распаковать Zip из строки в строку.   Найти похожие ветки 

 
w666w   (2006-12-01 17:51) [0]

Уважаемые мастера. Подскажите, как распаковать Zip из строки в строку без промежуточной работы с файлами? Долго бьюсь над этим вопросом и не нашел решения.

Заранее спасибо за помощь!


 
Virgo_Style ©   (2006-12-02 07:49) [1]

Не то что бы я долго бился над этим вопросом, но что, собственно, нужно - понять не смог.
Полагаю, тебе нужен либо компонент/библиотека, реализующие работу с zip в памяти, либо писать свою реализацию того же самого.


 
w666w   (2006-12-03 20:27) [2]

Да, именно работа с zip в памяти, без использования промежуточных файлов (без обращения в винту вообще). Нито не встречал такую либу (бесплатную) ?

Может быть есть способ доработать какой-либо существующий компонент для такой работы? В каком направлении копать?


 
Юрий Зотов ©   (2006-12-03 20:44) [3]

Именно ZIP? Если устроит ZLib, то он есть в Delphi. Пакует и распаковывает из потока в поток.


 
w666w   (2006-12-04 00:04) [4]

С Zlib голову сломишь напрочь. Суть проблемы: web сервер создает архив zip содержащий 1 текстовый файл. Необходимо распаковать этот архив, полученный через HTTP и делать разбор этого файла... Есть ПРОСТЫЕ и понятные методы, не требующие изучения ZLib API?


 
ORMADA ©   (2006-12-04 06:48) [5]

не знаю чё там с злибом мучаешь
просто довольно там

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;


 
Sha ©   (2006-12-05 00:07) [6]

... или так:

 s:=ZCompressStr(Edit1.Text);
 Edit2.Text:=ZDecompressStr(s);

если зайти в гости на http://www.base2ti.com/zlib.htm


 
Sha ©   (2006-12-05 00:59) [7]

Да, и в [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;


 
Eraser ©   (2006-12-05 16:54) [8]

> [7] Sha ©   (05.12.06 00:59)

вообще боландовский zlib заметно медленнее оригинального, который можно скачать по вашей ссылке.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.04 c
15-1168435066
Piroxyline
2007-01-10 16:17
2007.01.28
Turbo Delphi Explorer


2-1168113814
Officeman
2007-01-06 23:03
2007.01.28
TCPClient > TCPServer


10-1128048687
mechael
2005-09-30 06:51
2007.01.28
COM+, различие между методами чтения и записи своиства


2-1168369905
vovik
2007-01-09 22:11
2007.01.28
Перенос компонентов из delphi7 в delphi10


8-1149494028
hgd
2006-06-05 11:53
2007.01.28
Подскажите компонент





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский