合并两个ini文件,思路?

解决方案 »

  1.   

    uses inifiles;var
      inifileA,inifileB: TIniFile;
    /////////////////////////////
    procedure TForm1.Button2Click(Sender: TObject);
    var
      fileAStream: TFileStream;
      fileBstream: TFileStream;
      fileCstream: TFileStream;
    begin
       inifileA:= TIniFile.Create('c:\a.ini');
       inifileB:= tinifile.Create('c:\b.ini');
       inifileA.WriteString('AAA','AAA','A');
       inifileb.WriteString('BBB','BB','B');
       inifilea.Free;
       inifileb.Free;
       try
         fileAStream:= TFileStream.Create('c:\a.ini',fmOpenRead);
         fileBstream:= TFileStream.Create('c:\b.ini',fmOpenRead);
         fileCstream:= TFileStream.Create('c:\c.ini',fmCreate);
         fileCstream.CopyFrom(fileAStream,fileAStream.Size);
         fileCstream.Position:= fileAStream.Size;
         fileCstream.CopyFrom(fileBstream,fileBstream.Size);
       finally
         fileAStream.Free;
         fileBStream.Free;
         fileCStream.Free;
       end;
    end;
      

  2.   

    遍历两个文件所以section和value,写到新的ini文件,再删原来的文件贝
      

  3.   

    procedure TForm1.ReWriteINi(Const ASrcIniFile,ADstIniFile:Tfilename);
    var
       Src,Dst:Tinifile;
       SList,KList:Tstringlist;
       i,j:integer;
    begin
       Src:=Tinifile.Create(ASrcIniFile);   sList:=Tstringlist.Create;
       src.ReadSections(Slist);
       if slist.Count > 0 then
         begin
            Klist:=Tstringlist.Create;
            dst:=Tinifile.Create(AdstInifile);
            try
              for i:=0 to slist.Count -1 do
               begin
                  src.ReadSection(slist[i],Klist);
                  if Klist.Count > 0 then
                  for j:=0 to Klist.Count -1 do
                    dst.WriteString(slist[i],klist[j],src.ReadString(slist[i],klist[j],''));
               end;
            finally
             dst.Free;
             klist.Free;
            end;
         end;
       src.Free;
       slist.Free;
    end;使用上面的方法,可以将一个INI文件重新写为另一个ini文件,如果你要合并两个ini文件,只要想这样的使用
    ReWriteINi(Opendialog1.FileName,'c:\222.ini');
    ReWriteINi(Opendialog2.FileName,'c:\222.ini');这样就可以将两个文件存为一个ini文件里了,如果里面有重复项目,会自动重新写拉。。保证唯一特性。。