我在 Delphi 7 中有一个应用程序,我在其中编写了下面的代码,将大型 PDF 文件从 blob 字段加载到内存,然后加载 PDF,它适用于我已经用 1 GB 文件测试过的大文件。但是,某处存在内存泄漏,我不知道在加载 10 个大文件后,它会在哪里显示消息 - 内存不足。
我不确定如何在加载内存后清除内存。
我已经测试了加载几个 pdf 文件,它运行良好,组件没有问题。请注意,我不想在将其加载到组件中后将其保存到文件中,我想直接在内存中进行。
请注意,我不想保存到磁盘上的文件然后加载组件,我想直接在内存中执行。
procedure TForm1.btnAbrirClick(Sender: TObject);
var
BlobStream: TStream;
Arquivo: Pointer;
begin
pdf2.Active := False;
Screen.Cursor := crHourGlass;
try
BlobStream := absqry1.CreateBlobStream(absqry1.FieldByName('binario'),bmRead);
Arquivo := AllocMem(BlobStream.Size);
BlobStream.Position := 0;
BlobStream.ReadBuffer(Arquivo^, BlobStream.Size);
pdf2.LoadDocument(Arquivo);
pdfvw1.Active := True;
finally
Screen.Cursor := crDefault;
BlobStream.Free;
Arquivo := nil;
end;
end;