Hos*_*ain -1 delphi byte filestream
我正在使用流文件,但发生了"内存不足"错误.我想我必须逐字节地读取流.然后我用这个方法加载一个文件:
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)
但它无法正常工作.我的错误在哪里?
字节大小为1而不是2
fs.Read(oneByte, 1);
Run Code Online (Sandbox Code Playgroud)
使用SizeOf()函数可以轻松防止此类错误
fs.Read(oneByte, SizeOf(oneByte));
Run Code Online (Sandbox Code Playgroud)
另一方面,Read返回读取的字节数,以指示整个读取是否成功.您需要检查该返回值以处理错误.
首选的习惯是使用ReadBuffer.这将调用Read并在出现错误时引发异常.
正如@David Heffernan所指出的,逐字节读取文件流并不是最有效的方法.看看缓冲文件(更快的磁盘访问)
| 归档时间: |
|
| 查看次数: |
2235 次 |
| 最近记录: |