Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Проблема очистки TMemoryStream


Автор: Vit 19.1.2004, 05:12
То ли торможу, то ли совсем плохой стал... В общем, вопрос где ошибка?

Код
var  m:TMemoryStream;
...
m - заполняется текстом
...
     m.Seek(0,soFromBeginning);
     OEMToChar(m.memory, m.memory);
     Memo1.Lines.LoadFromStream(m);
     m.Clear; //вот здесь генерится Access Violation


Неужели LoadFromStream(m) приводит не к копированию памяти, а напрямую использованию этого же блока? Или в чём проблемы?

Автор: Vit 19.1.2004, 05:48
Всё разобрался... Ошибка была в

Код
OEMToChar(m.memory, m.memory);

Так как использовался поток, а не PChar, функция неправильно определяла размер буфферов, излечилось заменой, этой строки на:


Код
OEMToCharBuff(m.memory, m.memory, m.size);


Автор: Medved 20.1.2004, 01:42
Спрашивается, зачем спрашивал? smile.gif

Автор: Vit 20.1.2004, 02:19
Цитата(Pegas @ 19.1.2004, 16:42)
Спрашивается, зачем спрашивал? smile.gif

Ну так сначала спросил, потом поэкспериментировал, дошло...

Автор: Medved 20.1.2004, 02:23
Это я таким образом пытался тебе Вит комплимент сделать.... smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)