Einzelnen Beitrag anzeigen

Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Eine Ini-Section in ein andere Ini kopieren

  Alt 9. Mai 2017, 10:43
Zum Beispiel so: siehe unten, procedure kopiere( mi1, mi2 : TMemIniFile; sec : string );

[ Ich nehme an, du arbeitest ohne SubSections. Falls doch: Wenn du die Subsections von sec auch kopiert haben willst, dann müsstest du via ReadSubSections (oder ReadSections) an die in diesen SubSections gespeicherten Werte gelangen. ]


In diesem Beispiel werden die drei Wertepaare (b=1, c=2, d=3) aus Section a von m1 nach m2 kopiert.

Delphi-Quellcode:
uses IniFiles;

procedure kopiere( mi1, mi2 : TMemIniFile; sec : string );
var hs : TStringList;
    wert : string;
  i: Integer;
begin
  hs := TStringList.Create;
 try
  mi1.ReadSection( sec, hs );

  for i := 0 to hs.Count-1 do
  begin
    wert := mi1.readstring( sec, hs.Strings[i], '' );
    mi2.WriteString( sec, hs.Strings[i], wert );
  end;

 finally
  hs.free;
 end;
end;

procedure TForm87.FormCreate(Sender: TObject);
var m1, m2 : TMemIniFile;
begin
  m1 := TMemIniFile.Create( extractfilepath( application.exename) + 'tm1.txt' );
  m2 := TMemIniFile.Create( extractfilepath( application.exename) + 'tm2.txt' );
 try
  m1.AutoSave := true;
  m2.AutoSave := true;

  m1.WriteString( 'a', 'b', '1' );
  m1.WriteString( 'a', 'c', '2' );
  m1.WriteString( 'a', 'd', '3' );
  m1.WriteString( 'a\w', 'b', '1' );
  m1.WriteString( 'a\w', 'c', '2' );
  m1.WriteString( 'a\v', 'd', '3' );

  kopiere(m1,m2,'a');

 finally
  m1.Free;
  m2.Free;
 end;
end;
Michael Gasser
  Mit Zitat antworten Zitat