Delphi 如何检测流的结束?

Delphi 如何检测流的结束?,delphi,file,stream,position,eof,Delphi,File,Stream,Position,Eof,我有一个DLL,可以将数据输出到流。但它添加了后缀和前缀,我不想要。 我可以创建一个MemoryStream,让DLL输出数据,然后对其进行修剪,但是可以有几GB的数据,所以我只希望它直接保存到一个文件(FileStream)中。 我认为最好的解决方案是创建自己的流类。 因此,我提出: function TFileStream2.Write(const Buffer; Count: Integer): Longint; 在这里,我检查位置,如果它=0,那么我放弃缓冲区中的前几个字节。 这样我可

我有一个DLL,可以将数据输出到流。但它添加了后缀和前缀,我不想要。 我可以创建一个MemoryStream,让DLL输出数据,然后对其进行修剪,但是可以有几GB的数据,所以我只希望它直接保存到一个文件(FileStream)中。 我认为最好的解决方案是创建自己的流类。 因此,我提出:

function TFileStream2.Write(const Buffer; Count: Integer): Longint;
在这里,我检查位置,如果它=0,那么我放弃缓冲区中的前几个字节。
这样我可以修剪文件的开头。但是如何检测流的结尾,以便从结尾丢弃一些字节呢?

当流对象被销毁时,只需修剪文件的最后部分。您可以通过修改
Size
属性来实现这一点。

但是我认为字节已经保存到磁盘上了。这样可以缩短文件吗?