Показать сообщение отдельно
  #1  
Старый 12.05.2009, 18:28
dEEmS dEEmS вне форума
Прохожий
 
Регистрация: 12.05.2009
Сообщения: 3
Репутация: 10
По умолчанию TmemoryStrea​m и ClientSocket

Вобщем такая проблема:
Не очищается память методом Free. Выплевывает ошибку. Код примерно такой:
Код:
MyJpeg.Assign(bmp1);
myjpeg.CompressionQuality:=90;
myjpeg.Compress; 

pict:=Tmemorystream.Create;
pict.Position:=0;
myjpeg.SaveToStream(pict) ;
pict.Position:=0; 

ClientSocket1.Socket.SendText('Size:'+inttostr(pict.Size)+#0);
//если поставить pict.free сюда, то выполнится нормально.
ClientSocket1.Socket.SendStream(pict); //тут отправляется все ок.
pict.free; //а вот тут уже не срабатывает
Причем замечено, что до SendStream поток имеет нормальный размер (числом). А после выполнения SendStream, pict.size уже равен "Access violation at 0009272D1F accessing 00180094".

Код:
if ClientSocket1.Socket.SendStream(pict) then
pict.Free
не помогает

Это все дело в цикле, так что если не делать Free, то программа съедает всю оперативу до конца.

Так вот что же происходит с потоком после выполнения метода Socket.SendStream?? Заранее спс
Ответить с цитированием