5,927
社区成员




我有一张表非常大,表字段多,记录多。然后我遍历,把数据放到TStringList里面
然后SaveToFile保存成文件。但是到保存的时候,提示 Out Of Memory
有没有什么办法,把这种超大的字符,转成文件。
很奇怪,你为什么要把数据放到TStringList里面。这种情况你应该使用TFileStream类将数据直接写入文件里面。这种方法可以避免将所有数据加载到内存中,这样才能更好地处理大量的数据。我写了个简单的代码,你试一下。
var
Stream: TFileStream;
FileName: string;
i: Integer;
begin
FileName := 'data.txt';
Stream := TFileStream.Create(FileName, fmCreate);
try
// 循环遍历表数据
for i := 0 to MyTable.RecordCount - 1 do
begin
// 从表中获取数据
// ...
// 将数据写入文件
Stream.WriteBuffer(MyData, SizeOf(MyData));
end;
finally
Stream.Free;
end;
end;
使用TFileStream.Create打开一个文件流,并将其保存到Stream变量中。然后,我们循环遍历表数据,并使用Stream.WriteBuffer方法将数据写入文件中。
循环表记录,循环写入文件里面
可以直接操作文件写入的,不需要经过TStringList
获取一条记录写一次