procedure Tfrm_save.btn_saveClick(Sender: TObject);
var cn_file:TextFile; //这是文本文件格式,但也可以保存16进制的数据
    s3:Integer;  // 既然是16进制数据,就应该是数值而不是字符串
    s1:string;
    i: Integer;
begin
  s3:=12345678;  // 同上
  AssignFile(Cn_file,'c:\diskinfo.sbj');
  Reset(cn_file);
  for i:=0 to SizeOf(s3)-1 do
    s1 :=  Chr(PByte(Integer(@s3)+i)^)+s1;
  Rewrite(cn_file);
  Writeln(cn_file,s1);
  closefile(cn_file);
end;12345678保存成十六进制文件后,用ultraedit打开文件,除了看到4E 61 BC 00以外,还将看到末尾有0D 0A,怎样去掉末尾的OD 0A???还有我要求年月日如20051104保存后,用ultraedit打开后,看到的还是原样即20 05 11 04,该怎么做??分不够另外开贴加.....

解决方案 »

  1.   

    因为你用的是Writeln,所以才有0D 0A(换行符)。
    s1是20051104吧?你根本没有转成16进制的!
      

  2.   

    有换行符没关系,当你用Readln读时,它会把0D 0A之前的东西取出来。
      

  3.   

    program Project1;{$APPTYPE CONSOLE}uses
      SysUtils;var
      s: string = '20051102';
      tmp: string;
      buf: array[0..3] of byte;
      f: Integer;
      i: integer;
    begin
      { TODO -oUser -cConsole Main : Insert code here }
      for i:=0 to 3 do
      begin
        tmp:=Copy(s, i*2+1, 2);
        buf[i]:=StrToInt(Copy(tmp, 1, 1))*16+StrToInt(Copy(tmp, 2, 1));
      end;
      f:=FileCreate('1.txt');
      FileWrite(f, buf, sizeof(buf));
      readln;
    end.