Конференция "Начинающим" » TThread+TMemoryStream = исключения при чтении в буффер
 
  • urgun (17.02.10 11:25) [0]
    В потоке вызываю метод другого класса через Synchronize.
    В этом методе мне нужно прочитать файл в буфер, делаю так:

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


    В этом месте
    SendData.Read(Buffer, BufferSize);

    происходит исключение. Не пойму причину, что не так??
  • Медвежонок Пятачок © (17.02.10 11:37) [1]
    function Read(var Buffer; Count: Longint): Longint;
  • urgun (17.02.10 11:42) [2]

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

    Что вы хотели этим сказать?
  • Медвежонок Пятачок © (17.02.10 11:46) [3]
    то что метод ожидает одно, а ты ему подсовываешь другое.
  • urgun (17.02.10 11:50) [4]

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

    Это я понимаю, но подскажите пожалуйста, как сделать иначе, но так чтобы прочитать весь поток в непрерывный буфер, и чтобы потом иметь указатель на этот буфер.
  • Медвежонок Пятачок © (17.02.10 11:52) [5]
    Если это понимаешь, то передай в метод Read правильный первый аргумент.
  • urgun (17.02.10 11:56) [6]
    Это конечно круто, но почему то сработало так:
    SendData.Read(Buffer^, BufferSize);

  • Медвежонок Пятачок © (17.02.10 11:58) [7]
    Ты - передовой авианаводчик. (пойнтер)
    Я - бомбер.
    Я жду от тебя координаты цели. (адрес)
    А ты мне передаешь свои координаты. (адрес пойнтера)

    Я бросаю туда (по полученным от тебя координатам) бонбу, после чего ты получаешь AV.
 
Конференция "Начинающим" » TThread+TMemoryStream = исключения при чтении в буффер
Есть новые Нет новых   [134469   +11][b:0][p:0.001]