【发布时间】:2016-01-14 22:51:09
【问题描述】:
我想用 Delphi 将一个 2GB 的文件转换为一个字节数组。我使用这个函数,然后将文件加载到内存 Stream 中以获取字节。但我收到错误“内存不足”。我该如何解决这个问题?
type
TByteArray = Array of Byte;
function StreamToByteArray(Stream: TStream): TByteArray;
begin
// Check stream
if Assigned(Stream) then
begin
// Reset stream position
Stream.Position:=0;
// Allocate size
SetLength(result, Stream.Size);
// Read contents of stream
Stream.Read(result[0], Stream.Size);
end
else
// Clear result
SetLength(result, 0);
end;
//////then in button control i use:
var
strmMem: TMemoryStream;
bytes: TByteArray;
begin
strmMem:=TMemoryStream.Create;
if OpenDialog1.Execute then
strmMem.LoadFromFile(OpenDialog1.FileName);
bytes:=StreamToByteArray(strmMem);
strmMem.Free;
【问题讨论】:
-
为什么要在内存中保存这么大的文件? (两次)。