S1:String;
S2:String;
Dt:TDateTime;
Data:Array [0..99] of Integer;如何把这些数据都写入一个二进制文件和从文件中读出来?

解决方案 »

  1.   

    s1,s2: String;
    dt: TDateTime;
    data: Array [0..99] of Integer;procedure WriteToFile(FileName; String);
    var
      n: Integer;
    begin
      f := TFileStream.Create(FileName,fmCreate);
      try
        n := Length(s1);
        f.Write(n,SizeOf(n));
        f.Write(s1[1],n);    n := Length(s2);
        f.Write(n,SizeOf(n));
        f.Write(s2[1],n);    f.Write(dt,SizeOf(dt));    f.Write(data,SizeOf(data));
      finally
        f.Free;
      end;
    end;procedure ReadFromFile(FileName; String);
    var
      n: Integer;
    begin
      f := TFileStream.Create(FileName,fmOpenRead);
      try
        f.Read(n,SizeOf(n));
        SetLength(s1,n);
        f.Read(s1[1],n);    f.Read(n,SizeOf(n));
        SetLength(s2,n);
        f.Read(s2[1],n);    f.Read(dt,SizeOf(dt));    f.Read(data,SizeOf(data));
      finally
        f.Free;
      end;
    end;
      

  2.   

    一般情况下,我使用 FileOpen, FileRead, FileWrite, FileSeek 这几个函数来操作二进制文件.
      

  3.   

    文件都是二进制数据,用tstringlist。写起来烦一些保存:
    var
      Sl1, sl2: tstringlist;
      lp: integer;
    begin
      sl1 := tstringlist.create;
      try
        sl2 := tstringlist.create;
        try
          sl1.values['s1'] := s1;
          sl1.values['s2'] := s2;
          for lp := 0 to 99 do 
            sl2.add(inttostr(Data[lp]));
          sl1.values['data'] := sl2.CommaText;
          sl1.savetofile('d:\aaa.txt');
        finally
          Sl2.free;
        end;
      finally
        Sl1.free;
      end;
    end;
      

  4.   

    取回
    var
      Sl1, sl2: tstringlist;
      lp: integer;
    begin
      sl1 := tstringlist.create;
      try
        sl2 := tstringlist.create;
        try
          sl1.loadfromfile('d:\aaa.txt'); 
          s1 := sl1.values['s1'];
          s2 := sl1.values['s2'];
          sl2.CommaText := sl1.values['data'];
          for lp := 0 to 99 do 
            Data[lp] := strtoint(sl2[lp]);
        finally
          Sl2.free;
        end;
      finally
        Sl1.free;
      end;
    end;
      

  5.   

    来迟了 他们都说了
     我还说什么呢&^%$#&*(
      

  6.   

    参考:http://218.56.11.178:8020/web/index.aspx-》软件基地-》控件-》delphi/kylix->hexediter十六进制编辑器控件