小编Hos*_*ain的帖子

当我将文件加载到内存流时,Delphi内存不足错误

我想用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)

memory delphi

0
推荐指数
1
解决办法
1672
查看次数

Delphi - 如何逐字节读取文件流?

我正在使用流文件,但发生了"内存不足"错误.我想我必须逐字节地读取流.然后我用这个方法加载一个文件:

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)

但它无法正常工作.我的错误在哪里?

delphi byte filestream

-1
推荐指数
1
解决办法
2235
查看次数

标签 统计

delphi ×2

byte ×1

filestream ×1

memory ×1