Проблема с UpdateResource (недостаточно памяти) - PullRequest
0 голосов
/ 02 июня 2011

Я использую этот код для прикрепления файла в качестве ресурса к исполняемому файлу:

interface
type
  TBuffer = Array [0 .. 0] of Byte;
  PBuffer = ^TBuffer;

Procedure AttachFile();
var
  DataLength: DWord;
  Data: PBuffer;
begin
  FS := TFileStream.Create(Filename, fmOpenRead);
  try
    FS.Seek(0, soFromBeginning);
    DataLength := FS.Size;
    GetMem(Data, DataLength);
    FS.Read(Data^, DataLength);
  finally
      FS.Free;
  end;
  UpdateResource(ResourceHandle, RT_RCDATA, pchar('ResName'),
    0, Data, DataLength);
  EndUpdateResource(ResourceHandle, false);
end;

Проблема в том, что когда я хочу прикрепить файл Larg (1 ГБ, например), используя этот код, я получу эту ошибку: Out of memory.

Я также попытался разделить файл на более мелкие части (например, 100 МБ) и прикрепить его, используя for ring, но он все равно не работает, и я получаю Out of memory

1 Ответ

2 голосов
/ 02 июня 2011

Встраиваемые ресурсы не должны быть такими большими, и вы явно выходите за пределы.

Вы должны доставить этот файл как отдельный файл вместе с исполняемым файлом.

...