Главная страница
    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.042 c
2-1168499525
Roma L
2007-01-11 10:12
2007.01.28
SQL Server


2-1168195004
Ламер 2.Х
2007-01-07 21:36
2007.01.28
Посылаем файл!!!!


2-1168629474
Kirillrepin
2007-01-12 22:17
2007.01.28
как из ListView в режиме Report удалить выделенную запись


15-1167928848
Kolan
2007-01-04 19:40
2007.01.28
Как в VB обратится к элементу строки?


2-1168606314
Anton22
2007-01-12 15:51
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский