我想用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;
Run Code Online (Sandbox Code Playgroud) 我正在使用流文件,但发生了"内存不足"错误.我想我必须逐字节地读取流.然后我用这个方法加载一个文件:
fs := TFileStream.Create("c:\a\a.avi", fmOpenRead or fmShareDenyWrite) ;
Run Code Online (Sandbox Code Playgroud)
接下来我重置流位置:
fs.positon:=0;
Run Code Online (Sandbox Code Playgroud)
然后我试图读取流的第一个字节:
var
oneByte:byte;
begin
fs.Read(oneByte,2);
Run Code Online (Sandbox Code Playgroud)
但它无法正常工作.我的错误在哪里?