急!!读取二进制文件的问题。

wangw 2002-03-21 11:46:23
var
dbf: File;
numRecsRead, iValue: Integer;
buff: Array[1..10] of byte;
begin
AssignFile(dbf, 'abc.exe');
reset(dbf);
try
BlockRead(dbf, buff, 1, numRecsRead);
finally
CloseFile(dbf);
end;
iValue:=Integer(buff[1]);
Memo.Lines.Clear;
Memo.Lines.Add(IntToStr(iValue));
end;

运行时报错:raised exception class EAccessviolation with message 'Access
violation at address....'
当把读取的文件改成xxx.txt时不会报错,为什么?

谁有读取二进制文件的源码,能提供给我么?
...全文
27 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chechy 2002-03-21
  • 打赏
  • 举报
回复
试试这个:
BlockRead(dbf, buff[1], 1, numRecsRead);
wangw 2002-03-21
  • 打赏
  • 举报
回复
to iBear(大熊)

呵呵 对 我忘了默认是128byte 谢谢了

lgxing 2002-03-21
  • 打赏
  • 举报
回复
buff: Array[1..10] of byte;
改为: buff: Array[0..9] of byte;

或者
BlockRead(dbf, buff, 1, numRecsRead);
改为:BlockRead(dbf, buff[1], 1, numRecsRead);
kofxdm 2002-03-21
  • 打赏
  • 举报
回复
建议你使用FileRead()这一类函数来操作文件,比AssignFile好方便很多的。
iBear 2002-03-21
  • 打赏
  • 举报
回复
reset(dbf,1)
不加1这个参数,默认是128个字节,而你的数据空间才10个,当然会出错!!!
jiaorg 2002-03-21
  • 打赏
  • 举报
回复
var
fs : Tfilestream;
str : String;

// SourceStream : TCompressionStream;
// DestStream : TMemoryStream;
// Count : Integer;
//tmpstr,
tmpstr1 : string;
//zip_stream : TMemoryStream;

Begin
fs:=Tfilestream.Create(filename,fmOpenRead);
str:=ExtractFilename(filename);
setlength(tmpstr1,fs.size);
fs.read(pointer(tmpstr1)^,fs.size);
fs.Free;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧