![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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;