![]() |
Eine Ini-Section in ein andere Ini kopieren
Ich probiere hier schon seit Stunden mit StringListen rum wie ein Verrückter und komme nur zum Ergebnis Kopfschmerzen!
Jetzt muss ich mich an euch wenden. Wie ist es möglich, wenn ich zwei TMemIniFile-Instanzen habe, eine komplette Section von der ersten in die zweite Instanz zu kopieren? |
AW: Eine Ini-Section in ein andere Ini kopieren
Hallo,
mit ReadSection holst du dir Namen der Bezeichner der Sektion, und dann nimmst du eine kleinen Schleife mit ReadString aus der alten Ini und WriteString in die neue Ini. |
AW: Eine Ini-Section in ein andere Ini kopieren
Ich bin mir schon gar nicht mehr sicher was ich alles probiert habe aber das hilft glaube ich auch nicht.
Gibt es hier nix einfaches ohne Kopfschmerzen? Weil ReadSection holt mir nur die Titel jeder Section nicht aber den Inhalt. GetStrings holt mir wirklich alles aber damit kann man auch nix anfangen da ich absolut keine Ahnung habe wie man da durchparst. Da muss es doch was einfaches, sehr kurzes knackiges geben um eine Section von Ini-1 in Ini-2 zu bringen! |
AW: Eine Ini-Section in ein andere Ini kopieren
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; |
AW: Eine Ini-Section in ein andere Ini kopieren
Du hast meinen Tag gerettet! Danke.
|
AW: Eine Ini-Section in ein andere Ini kopieren
Hallo,
Zitat:
public procedure TIniFile.ReadSection( const Section: string; Strings: TStrings ); Oder habe ich da was übersehen? |
AW: Eine Ini-Section in ein andere Ini kopieren
Zitat:
Aber für deinen Zweck gibt es ja auch ![]() Die Kopiere Methode könnte dann so aussehen:
Delphi-Quellcode:
procedure kopiere( mi1, mi2 : TMemIniFile; sec : string );
var hs : TStringList; i: Integer; begin hs := TStringList.Create; try mi1.ReadSectionValues( sec, hs ); mi2.EraseSection(sec); // falls der aktuelle Inhalt nicht erhalten bleiben soll for i := 0 to hs.Count-1 do begin mi2.WriteString( sec, hs.Names[i], hs.ValueFormIndex[I] ); end; finally hs.free; end; end; |
AW: Eine Ini-Section in ein andere Ini kopieren
Zitat:
@TE: Ein Blick in die Dokumentation wirkt manchmal doch Wunder. ![]() ![]() Es ist genau so wie hoika es gesagt hat. Die eine Funktion liest dir alle Sections aus (ReadSections). Die andere Funktion liest dir die Keys innerhalb einer bestimmten Section aus (ReadSection). Die Funktion die du verwenden solltest wäre demzufolge ReadSection. Danach kannst du dir die einzelnen Werte auslesen und entsprechend behandeln. Eine noch einfachere Variante wäre, dass du einfach die Funktion ![]() EDIT: Och menno. Zu langsam. Where's the red box :shock: |
AW: Eine Ini-Section in ein andere Ini kopieren
Zitat:
ReadSectionValues liest nur die "Werte" siehe Post UR |
AW: Eine Ini-Section in ein andere Ini kopieren
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz