用文件流读取文件内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;

解决方案 »

  1.   


    A,B,c,d,E ==?呵呵 ,那你fs.ReadBuffer(bt,?); 
      

  2.   

        fs.Position := $6E; 
        fs.ReadBuffer(bt,$6E-$6A); bt的长度要能容纳你得区间长度
      

  3.   

    fs.ReadBuffer(bt,你要的区间长度($6E-$6A)); 
      

  4.   

    bt : array[0..1023] of Char;
    长度够  但是
        fs.Position := $6E; 
        fs.ReadBuffer(bt,$6E-$6A); 
    还是只显示 一个数据 就是6E的!
      

  5.   

    看了 不是不可见的字符 
    是不是这个的问题
    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;  而且我不是很明白这里的作用!
      

  6.   


    两种情况:1、你读的数据('c:\1k.org')本身就一个字节数据6E
             2、数据存储的为二进制文件,所以有很多不可显示的字符,你可以用UltraEdit打开看看
    估计第二种的可能性大!
      

  7.   


    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;  
      

  8.   

    哦明白了 就是
    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;  
    问题 谢谢各位!!
      

  9.   

    function StrToHexStr(const S:Ansistring):Ansistring; 
    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;