用UltraEdit打开C:\diskinfo.sbj文件看到的是00 BC 61 4E,用记事本打开是乱码。怎样用字符串的方式读取出来'00BC614E'?????var Cn_File:TextFile;
    s1:string;
begin
  AssignFile(Cn_file,'c:\diskinfo.sbj');
  Reset(cn_file);
  read(cn_file,s1);
  showmessage(s1);
end;s1的内容为空????我想读取出来的结果是字符串'00BC614E'。用filestream读取也是空。。var fs:TFilestream;
  s1:string;
  myreader:TReader;
begin 
  fs:=TFilestream.create('c:\diskinfo.sbj',fmopenread);
  memo1.Lines.LoadFromStream(fs);  //load后memo1也是空??
  myreader:=TReader.Create(fs,1024); //在这里出错,怎么回事????
  myreader.ReadListBegin;
  s1:='';
  while not myreader.EndOfList do
  Begin
    s1:=s1+myreader.readstring;
  end;
  showmessage(s1);
  myreader.ReadListEnd;
  myreader.Free;
  fs.free;
end;

解决方案 »

  1.   

    读取到array of byte 后,然后使用BinToHex
      

  2.   

    program Project2;{$APPTYPE CONSOLE}uses
      SysUtils;var
      buf: array[0..3] of byte;
      f: Integer;
      i: integer;
    begin
      { TODO -oUser -cConsole Main : Insert code here }
      f:=FileOpen('c:\diskinfo.sbj', fmOpenRead);
      FileRead(f, buf, sizeof(buf));
      for i:=0 to 3 do
        Write(IntToHex(buf[i], 2), ' ');
      readln;
    end.去试试!没那么复杂!
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      buf: array[0..3] of byte;
      f: Integer;
      i: integer;
      s: string;
    begin
      s:='';
      f:=FileOpen('1.txt', fmOpenRead);
      FileRead(f, buf, sizeof(buf));
      FileClose(f);
      for i:=0 to 3 do
        s:=s+IntToHex(buf[i], 2);
      showmessage(s);
    end;