我想在ini文件中写入信息连续使用如下的语句:
WritePrivateProfileSection(PChar('Machine1'), 'Device=1', PChar('xx'));
xx为路径。
却发现,后面的东西覆盖了前面的
即,永远只有最后一条
何解?

解决方案 »

  1.   

    你的Ident值没有变化,当然每次都是往同一个地方写了。
      

  2.   

    是啊
    我是想写成
    [Machine1]
    Device=1
    Name=2
    ...[Machine2]
    Device=3
    Name=6
    ...
      

  3.   

    看上面的代码,你是否是想给多个Machine进行配置,那你只好多定义几个Section了。Delphi封装了TIniFile类,你不妨试一试它。
      

  4.   

    with TIniFile.Create(AFileName) do
    try
      for I := 1 to N do
      begin
        ASec := 'Machine' + IntToStr(I); 
        WriteInteger(ASec, 'Device' , 2 * I - 1);
        WriteInteger(ASec, 'Name', 2 * (2 * I - 1));
      end;
    finally
      Free;
    end;
      

  5.   

    楼上的
    我的方法跟你的差不多
    可就是后面的会覆盖前面的
    也就是说,每个Machine后面
    都只有Name=xx
    而Device=xx就没有了
      

  6.   

    在INI文件读取时先读INI文件中的值,如果该值不在那么读入一个默认值,我想你可能是没有读了INI文件的内容。所以总是以默认值出现。还有就是在释放文件时,一定还要写入当前值的。这样下次再用时,就是新设置的值了。
    constructor Tconfigu.create;
    var
       Confile:AnsiString;
       IniFile:TIniFile;
       ConDefault:AnsiString;
    begin
       inherited create;
       Acurentpath:=Extractfilepath(application.exeName);
       Aconstring:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=cjglxt;Data Source=SS;
       ConDefault:=Aconstring;
       ConFile:=Acurentpath+'config.ini';
       IniFile:=TIniFile.Create(ConFile);
       AconString:=IniFile.ReadString('Application','ConString',ConDefault);
       IniFile.Destroy;
    end;
    destructor Tconfigu.Destroy;
    var
      IniFile:TIniFile;
      ConFile:String;
    begin
      AconString:=Acurentpath+'config.ini';
      IniFile:=TIniFile.Create(ConFile);
      IniFile.WriteString('Application','ConString',AconString);
      IniFile.Destroy;
      inherited Destroy;
    end;