Пытаюсь создать качалку файлов по сети - есть проблема.
От: Mastak  
Дата: 23.09.03 12:06
Оценка:
Я пытаюсь создать качалку файлов по сети с помощью DXPlay. Создаю структуру для персылки:

TDXFileMessage = record
    MessageType: DWORD;  {MessageType is absolutely necessary}
    BlockSize:Word; {размер блока в байтах или размер реально прочитанной информации}
    Buf:array[0..0] of Char;  
end;


По логике работы надо делать изменяемый размер пакета, чтобы подстраиваться под разную скорость передачи. Теперь пытаюсь отправить это сообщение:


var
  Msg:^TDXFileMessage;
  MsgSize:integer;
begin
  MsgSize:=SizeOf(TDXFileMessage)+POCKET_SIZE;
  GetMem(Msg,MsgSize);
  Msg.MessageType:=DXFILE_MESSAGE;
  setlength(msg.Buf,POCKET_SIZE);                         <<<-ОШИБКА
  BlockRead(FromF,msg.Buf,POCKET_SIZE,NumRead);
  Msg.BlockSize:=NumRead;
  DXPlay1.SendMessage(DPID_ALLPLAYERS,Msg,MsgSize);
end;

Код немного упрощён для лучшего восприятия. B помеченной строке деглюкер Delphi выдаёт:

(245): Constant object cannot be passed as var parameter

Так как же всё-таки установить динамический размер буфера перед отправкой? Что я делаю не так?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.