![]() |
*.ini lesen, vergleichen und erweitern
Hallo an alle erstmal, Ich bin Neu hier im Forum habe mit dem Proggen gerade erst angefangen, ich ahbe da ne Aufgabe, bei der ich ein paar Fragen habe, hoffe ihr könnt oder wollt mir dabei helfen!!!
Also folgendes, ich möchte 2 Ini Files vergleichen lassen also die einzelnen Sectionen in der ini, und wenn in einer Ini eine Section drin ist, die in der anderen nicht existiert, soll diese hinzugefügt werden, Bsp.: IniNeu [SectionA] Bla = Bla Zorck = Zorck iniAlt [SectionA] Bla = Bla Zorck = Nun da in der IniNeu Zorck = Zorck ist, soll die iniAlt so beschrieben werden wie IniNeu, das die beiden identisch sind. ich hoffe ihr versteht was ich meine, habe damit angefangen mich mal einzulesen und habe mich entschieden "ReadSection", "ReadSectionValues" zu benutzen aus der Klasse TIniFile. bitte helft mir, habe echt probleme mit!!!!! Ein richtiges brett vor dem Kopf :wall: |
Re: *.ini lesen, vergleichen und erweitern
Hallo KroKro!
Herzlich Willkommen in der DelphiPraxis! :hi: So, dann lass uns mal über dein Problem reden/schreiben. :) Im Groben ahne ich, was du willst. Nur die Feinheiten sind mir nicht ganz klar. Da du ja die neue Datei updaten willst, brauchst du eine paar Regeln, nach denen du arbeitest. Was passiert ...
Aber ... btw ... wenn die alte Datei genauso aussehen soll wie die Neue .... tuts da nicht auch ein smartes "FileCopy"? :) |
Re: *.ini lesen, vergleichen und erweitern
Hi ChaosBen, danke für deine Antwort!!!
- Eine bereits Vorhandene Section soll in ruhe gelassen werden. - Das nicht vorhanden Value soll hinzugefügt werden wie in der neuen ini. - Wenn der Typ oder der Wert sich nach dem Update nicht geändert haben, sollen die so bleiben wie sie sind. Sobald sich in der neuen Ini ein Wert geändert hat, soll dieser auch verändert werden. |
Re: *.ini lesen, vergleichen und erweitern
Um nochmals meinen Spruch von oben aufzuwärmen:
Am Ende sehen doch beide Dateien haargenau gleich aus, richtig? Wenn ja, dann würde ich das ganze auf
Delphi-Quellcode:
beschränken.
DeleteFile(OldFile);
CopyFile(NewFile, OldFile) |
Re: *.ini lesen, vergleichen und erweitern
Ahhh tut mir leid, habe mich voll vertan, ich möchte das die Values in ruhe gelassen werden d.h
Update Ini Feld = "Text" Feld2 = "Text" Ini Feld = "anderer Text" So, jetzt soll Feld2 aus der UpdateIni in die ini eingefügt werden, jedoch das Feld mit dem Wert "anderer Text" soll in ruhe gelassen werden. Wenn z.B. eine Section komplett in der ini nicht existiert, soll diese aus der UpdateIni eigefügt werden. Ich hoffe diese beschreibung bringt mehr, ich bin einfach zu schlecht im erklären!!! Sorry und danke für deine Hilfe!!!! |
Re: *.ini lesen, vergleichen und erweitern
Hallo Kroko,
um nur fehlende Einträge in einer Steuerdatei zu ergänzen könntest du so vorgehen (ungetestet):
Delphi-Quellcode:
Grüße vom marabu
program Project2;
{$APPTYPE CONSOLE} uses Classes, IniFiles, SysUtils; var iniAlt, iniNeu: TMemIniFile; iSection, iValue: integer; s, sSections: TStrings; begin if not (ParamCount in [1..2]) then Halt; if not FileExists(ParamStr(1)) then Halt; iniAlt := TMemIniFile.Create(ParamStr(1)); iniNeu := TMemIniFile.Create(ParamStr(2)); s := TStringList.Create; sSections := TStringList.Create; iniAlt.ReadSections(sSections); for iSection := 0 to Pred(sSections.Count) do begin iniAlt.ReadSection(sSections[iSection], s); for iValue := 0 to Pred(s.Count) do if not iniNeu.ValueExists(sSections[iSection], s[iValue]) then iniNeu.WriteString( sSections[iSection], s[iValue], iniAlt.ReadString(sSections[iSection], s[iValue], '') ); end; sSections.Free; s.Free; iniNeu.UpdateFile; iniNeu.Free; iniAlt.Free; end. |
Re: *.ini lesen, vergleichen und erweitern
ich werde es mal testen, vielen dank!!!!!!!!!!!
|
Re: *.ini lesen, vergleichen und erweitern
SUPER!!!!!
Läuft prima, musste nur ein paar sachen ändern und jetzt läuft es einwandfrei!!!!! Ich danke euch beiden vielmals für eure Hilfe!! DANKE!!!!!!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 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