用文件流读取文件内16进制的数据怎么才能一次读取一个区间的数据?如6A~6E!
下面是根据别人指导写的代码 但是只能做到在edit上显示6E一个位置的数据,如何做到
显示一个区间的数据如显示6A~6E数据!function StrToHexStr(const S:Ansistring):Ansistring;
var
I:Integer;
begin
for I:=1 to Length(S) do
begin
if I=1 then
Result:=Ansistring(IntToHex(Ord(S[1]),2))
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
fs : TFileStream;
bt : array[0..1023] of Char;
begin
fs := TFileStream.Create('c:\1k.org',fmOpenRead );
try
fs.Position := $6E;
fs.ReadBuffer(bt,1);
edit1.Text := StrToHexStr(bt);
finally
FreeAndNil(fs);
end;
end;
下面是根据别人指导写的代码 但是只能做到在edit上显示6E一个位置的数据,如何做到
显示一个区间的数据如显示6A~6E数据!function StrToHexStr(const S:Ansistring):Ansistring;
var
I:Integer;
begin
for I:=1 to Length(S) do
begin
if I=1 then
Result:=Ansistring(IntToHex(Ord(S[1]),2))
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
fs : TFileStream;
bt : array[0..1023] of Char;
begin
fs := TFileStream.Create('c:\1k.org',fmOpenRead );
try
fs.Position := $6E;
fs.ReadBuffer(bt,1);
edit1.Text := StrToHexStr(bt);
finally
FreeAndNil(fs);
end;
end;
解决方案 »
- 请问哪个打包工具可以检测提示用户关闭正在运行的软件?
- RichEdit控件滚动条
- 菜鸟提问:进程间传递消息!50分,急!!在线等,谢谢
- 急救!!!!!!!!!!!!!!!!!!
- 新手问题:关于sp_help
- procedure WMNID(var msg:TMessage);message wm_nid;问题??
- FastReport在Win98下能用吗?
- ActiveX 控件在IE中使用,提示DAX Access错误,搞定了给300分!
- 如何在opendialog中一次选定多个文件?
- 怎么用sql语句按照每个小时用group by 汇总数据?
- 关于打印问题,delphi中如何打印指定页
- 用ado连接Access出错
A,B,c,d,E ==?呵呵 ,那你fs.ReadBuffer(bt,?);
fs.ReadBuffer(bt,$6E-$6A); bt的长度要能容纳你得区间长度
长度够 但是
fs.Position := $6E;
fs.ReadBuffer(bt,$6E-$6A);
还是只显示 一个数据 就是6E的!
是不是这个的问题
function StrToHexStr(const S:Ansistring):Ansistring;
var
I:Integer;
begin
for I:=1 to Length(S) do
begin
if I=1 then
Result:=Ansistring(IntToHex(Ord(S[1]),2))
end;
end; 而且我不是很明白这里的作用!
两种情况:1、你读的数据('c:\1k.org')本身就一个字节数据6E
2、数据存储的为二进制文件,所以有很多不可显示的字符,你可以用UltraEdit打开看看
估计第二种的可能性大!
function StrToHexStr(const S:Ansistring):Ansistring;
var
I:Integer;
begin
for I:= 0 to Length(S)-1 do
begin
Result:= Result + Ansistring(IntToHex(Ord(S[i]),2))
end;
end;
function StrToHexStr(const S:Ansistring):Ansistring;
var
I:Integer;
begin
for I:=1 to Length(S) do
begin
if I=1 then
Result:=Ansistring(IntToHex(Ord(S[1]),2))
end;
end;
问题 谢谢各位!!
var
i: integer;
NewData: string;
begin
NewData := '';
for I:=1 to Length(S) do
begin
NewData := NewData + Ansistring(IntToHex(Ord(S[I]),2))
end;
Result := NewData;
end;