当我在memorystream或filestream中使用大文件时,我看到一个“内存不足”的错误
我怎么解决这个问题?
例:
procedure button1.clıck(click);
var
mem:TMemoryStream;
str:string;
begin
mem:=Tmemorystream.create;
mem.loadfromfile('test.txt');----------> there test.txt size 1 gb..
compressstream(mem);
end;
最佳答案
您的实现非常混乱。我不确切知道CompressStream的功能,但是如果您想将大文件作为流处理,则可以通过简单地使用TFileStream来节省内存,而不是尝试一次将全部内容读入TMemoryStream。
同样,使用完TMemoryStream之后,您再也不会释放它,这意味着您将泄漏大量内存。 (除非CompressStream负责此工作,但是从代码中还不清楚,以这种方式编写它确实不是一个好主意。)