Главная страница
    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.043 c
1-1165419214
MJShvedov
2006-12-06 18:33
2007.01.28
Как можно определить параметр ячейки DrawGrid?


15-1168031933
PHPdeveloper
2007-01-06 00:18
2007.01.28
Хммм


2-1168461271
BullDozer
2007-01-10 23:34
2007.01.28
Работа с бд


15-1168411061
pavel_guzhanov
2007-01-10 09:37
2007.01.28
Наверное еще не все потеряно :o))


1-1165228805
StriderMan
2006-12-04 13:40
2007.01.28
SetFocus и ScrollBox





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский