Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.16;
Скачать: CL | DM;

Вниз

Распаковка ZDecompressStream   Найти похожие ветки 

 
Chaser ©   (2007-09-28 16:19) [0]

Привет всем!

Вопрос по упаковке/распаковке Zlib (нужно по сети передать StringList).

Пакую так:


var
Str: TStringList;
Memstr,CompressStream: TMemoryStream;
begin
...
Str.SaveToStream(Memstr);
ZCompressStream(Memstr,CompressStream,zcDefault);
CompressStream.Position:=0;

AThread.Connection.OpenWriteBuffer;
AThread.Connection.WriteInteger(CompressStream.Size);
AThread.Connection.WriteStream(CompressStream);
AThread.Connection.CloseWriteBuffer;
...
end;


Распаковка:


 ms.Clear;
 n:=Form1.IdTCPClient.ReadInteger(true);
 Form1.IdTCPClient.ReadStream(ms,n);

 ZDecompressStream(ms,msd);
 Str.LoadFromStream(msd);
 ...


В итоге "msd" почему-то равняется 0, хотя "ms" равен какому-то числу (т.е. данные есть).

Вот не пойму, почему не распаковывается поток?


 
Сергей М. ©   (2007-09-28 16:50) [1]


> "msd" почему-то равняется 0


Объект не может быть ранен ни нулю, ни "какому-то числу".


 
Chaser ©   (2007-09-28 17:00) [2]

msd.size конечно же.


 
Chaser ©   (2007-09-28 17:01) [3]

Из-за чего так может быть?


 
Сергей М. ©   (2007-09-28 17:04) [4]

Ну наверно из-за того что на передающей стороне CompressStream.Size = 0


 
Сергей М. ©   (2007-09-28 17:08) [5]

И, кстати, нет нужды явно вызывать методы WriteInteger, ReadInteger.

Посмотри внимательно на параметры методов WriteStream, ReadStream - при определенных значениях эти методы способны делать то же самое (т.е. писать/читать префикс размера потока), но неявно.


 
Chaser ©   (2007-09-28 17:28) [6]

Всем спасибо, как всегда ошибка закралась в невнимательности (((

Str.SaveToStream(Memstr);
Memstr.Position:=0;               <- забыл дописать
ZCompressStream(Memstr,CompressStream,zcDefault);

Вопрос закрыт.



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

Текущий архив: 2007.12.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
15-1195090718
Riply
2007-11-15 04:38
2007.12.16
Разделы на CD/DVD - диске.


2-1195074620
alikon1
2007-11-15 00:10
2007.12.16
Назначение клавишам действий


15-1195461860
lehich
2007-11-19 11:44
2007.12.16
html и использование баз ACCESS


11-1174226435
D[u]fa
2007-03-18 17:00
2007.12.16
Пара вопросов о PControl


11-1181055188
=BuckLr=
2007-06-05 18:53
2007.12.16
То, что у меня не работает в RichEdit