Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TThread+TMemoryStream = исключения при чтении в буффер


urgun ©   (2010-02-17 11:25:00) 

В потоке вызываю метод другого класса через Synchronize.
В этом методе мне нужно прочитать файл в буфер, делаю так:

   SendData:=TMemoryStream.Create;
   SendData.LoadFromFile(filename);
   BufferSize:=SendData.Size;
   Buffer:=AllocMem(BufferSize);
   SendData.Read(Buffer, BufferSize);
   SendData.Destroy;

В этом месте SendData.Read(Buffer, BufferSize);происходит исключение. Не пойму причину, что не так??


Медвежонок Пятачок   (2010-02-17 11:58:00) [1]

Ты - передовой авианаводчик. (пойнтер)
Я - бомбер.
Я жду от тебя координаты цели. (адрес)
А ты мне передаешь свои координаты. (адрес пойнтера)

Я бросаю туда (по полученным от тебя координатам) бонбу, после чего ты получаешь AV.


urgun   (2010-02-17 11:56:00) [2]

Это конечно круто, но почему то сработало так:
SendData.Read(Buffer^, BufferSize);


Медвежонок Пятачок   (2010-02-17 11:52:00) [3]

Если это понимаешь, то передай в метод Read правильный первый аргумент.


urgun   (2010-02-17 11:50:00) [4]


> то что метод ожидает одно, а ты ему подсовываешь другое.

Это я понимаю, но подскажите пожалуйста, как сделать иначе, но так чтобы прочитать весь поток в непрерывный буфер, и чтобы потом иметь указатель на этот буфер.


Медвежонок Пятачок   (2010-02-17 11:46:00) [5]

то что метод ожидает одно, а ты ему подсовываешь другое.


urgun   (2010-02-17 11:42:00) [6]


> function Read(var Buffer; Count: Longint): Longint;

Что вы хотели этим сказать?


Медвежонок Пятачок   (2010-02-17 11:37:00) [7]

function Read( var Buffer; Count: Longint): Longint;


Наверх

Титульная страница Поиск, карта сайта Написать письмо