Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизНужна помощь по методам декомпрессии Найти похожие ветки
← →
Samael6 © (2004-03-17 18:07) [0]Доброго времени суток!
Господа, возникла необходимость работать с такими декомпрессорами как LZW и Flate. Но в процессе их написания возник ряд проблем, которые я не знаю как исправить.
Взял спецификацию этих методов и точно по ней написал библиотеку, то что она компрессирует, она может и разкомпрессировать, но как только подставляю соответствующую методу строку взятую из PDF-файла(именно эта информация является конечной целью), так ничего не работает, выдается ошибка и все.
Перерыл весь Инет на предмет готовых решений(в т.ч. zlib) и в них таже проблема.
Не подскажите как мне поступить? Может у кого есть работающий пример?
Заранее очень благодарен!
← →
Samael6 © (2004-03-17 18:58) [1]Товарищи, не кидайте душу грешную на растерзание.
Если нужно могу выложить исходники моих нароботок.
← →
Mim (2004-03-17 20:11) [2]Например
FIdHTTP.DoRequest(IdHTTPMethod,FRequest.URL,FRequest.SourceStream,FResponse.ResultStream);
if FIdHTTP.Response.ContentEncoding = "deflate" then
begin
FResponse.ResultStream.Position := 0;
with TDecompressionStream.Create(FResponse.ResultStream) do
try
Position := 0;
s := "";
repeat
FillChar(buf,l,0);
i := Read(buf,l);
s := s + copy(buf,1,i);
until(i <> l);
finally
Free;
end;
FResponse.ResultStream.size := 0;
FResponse.ResultStream.write(pointer(s)^,length(s));
end;
← →
Mim (2004-03-17 20:11) [3]это ZLib из delphi 7
← →
Samael6 © (2004-03-17 20:17) [4]А примера с файлом не приведешь, я тут запутался. Т.е. есть файл содержащий нужную инфу, нужно его раскодировать.
← →
Samael6 © (2004-03-17 20:29) [5]Кстати, у меня D6(см. заголовок) и объкта TDecompressionStream у меня нет. Если не трудно вышли свою библиотеку.
← →
Mim (2004-03-21 13:01) [6]Вудзрш 6 под рукой не оказалось зато посмотрел delphi 5 cd
F:\INFO\EXTRAS\ZLIB\ZLIB.PAS DOS Строка 115/556 Кол 1 R 32
TDecompressionStream = class(TCustomZlibStream)
То есть обманываете сударь, есть tdecompressionstream в delphi 5 и в delphi 7 и готов поспорить на ящик пива что и в вудзрш 6 есть.
Что касается примера с фалами - вуаля
uses classes, windows, zlib;
procedure d_(const fn1,fn2:string);
var fs1, fs2:tfilestream;
ds: tdecompressionstream;
buf:array [1..1024] of char;
begin
fs1 := tfilestream.create(fn1,fmopneread);
fs2 := tfilestream.create(fn2,fmcreate);
try
try
ds := TDecompressionStream.Create(fs1);
ds.Position := 0;
repeat
i := ds.Read(buf,sizeof(buf));
if i <> 0 then
fs2.write(buf,i);
until(i < sizeof(buf));
finally
ds.free;
end;
finally
fs1.free;
fs2.free;
end;
end;
Что касается первого примера то конечно твм размер буфера ныдо было взять побольше.
← →
Mim (2004-03-21 13:15) [7]Что касается первого примера то конечно твм размер буфера ныдо было взять побольше.
Хотя нет вру
там не 1 (еденица) а l (эль ангельская L)
var
IdHTTPMethod : TIdHTTPMethod;
i:integer;
s:string;
buf:array[1..2048] of char;
const
l = sizeof(buf);
← →
Samael6 © (2004-03-22 14:38) [8]Спасибо за примеры, один вопрос:
> там не 1 (еденица) а l (эль ангельская L)
А откуда она взята? В var"е ее нет...
← →
Samael6 © (2004-03-22 14:49) [9]Жаль, но не помогло. Уже при первом чтении выскакивает AV.
← →
Samael6 © (2004-03-22 14:53) [10]
> > там не 1 (еденица) а l (эль ангельская L)
>
> А откуда она взята? В var"е ее нет...
А, понял - туплю. Извини.
← →
Serginio666 (2004-03-22 14:55) [11]Скачай материалы к книге Бакнелл Джулиан М
"Фундаментальные алгоритмы и структуры данных в Delphi "
http://www.diasoft.kiev.ua/cgi/webshop.cgi?config=/home/www/htdocs/diasoft/cgi/config.txt&uid=UPTiZgAA1079956398&command =link--ds_materials_set
← →
Samael6 © (2004-03-22 15:37) [12]Спасибо за ссылку, но там архив не находится.
А ошибка все равно не исчезла.
Может при записи в PDF-поток компрессированная строка пишется как-то по-особому и ее нужно изменять прежде чем пытаться его распаковать? Я просто копирую закодированный блок из PDF-файла в новый файл и пытаюсь его раскодировать.
Может кто скажет, что не так?
← →
Samael6 © (2004-03-22 18:39) [13]Так что так никто ничего и не скажет? Может кто знает стандарт потока компрессированных данных PDF"а или где почитать скажет, буду очень признателен!
← →
Defunct © (2004-03-22 18:48) [14]Samael6 © (17.03.04 18:07)
Есть готовый компонент TCompress, знает 5 методов запаковки/распаковки LZW, LZH и еще что-то. Помоему он даже шареварный.
← →
Samael6 © (2004-03-23 15:37) [15]Спасибо, но основная проблема не в компрессии. Те методы, что описал Mim, вполне работоспособны. Они компрессируют и разкомпрессируют информацию такжу как и все остальные, но ни один из них не может проделать тоже самое с блоком вырезанным из PDF. Именно в этом основная проблема. Я не знаю, может в файл PDF"a пишется компрессированная инфа не чистоганом, а после какой-то обработки(криптование например)?
Если кто знает, подскажите, плиз...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.035 c