AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

*.ini lesen, vergleichen und erweitern

Ein Thema von KroKro · begonnen am 5. Dez 2005 · letzter Beitrag vom 7. Dez 2005
Antwort Antwort
KroKro

Registriert seit: 5. Dez 2005
11 Beiträge
 
Delphi 5 Enterprise
 
#1

*.ini lesen, vergleichen und erweitern

  Alt 5. Dez 2005, 19:01
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
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#2

Re: *.ini lesen, vergleichen und erweitern

  Alt 6. Dez 2005, 06:50
Hallo KroKro!

Herzlich Willkommen in der DelphiPraxis!

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 ...
  • ... mit einer nicht vorhandenen Section?
  • ... mit einem nicht vorhanden Value?
  • ... mit einem vorhanden Value mit falschem Wert?
  • ... mit einem vorhanden Value mit falschem Typ?
  • ...
Wenn du diese Fragen geklärt hast, kannst du deine schon angeführten Funktionen nutzen um im fröhlichen Reigen durch die Datei zu hüpfen und hier und da ein paar Änderungen zu machen. Du könnstes mit ReadSections beginnen und darin durch jede Section der neuen Datei gehen und die Änderungen in der alten machen.

Aber ... btw ... wenn die alte Datei genauso aussehen soll wie die Neue .... tuts da nicht auch ein smartes "FileCopy"?
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
KroKro

Registriert seit: 5. Dez 2005
11 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: *.ini lesen, vergleichen und erweitern

  Alt 6. Dez 2005, 13:34
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.
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#4

Re: *.ini lesen, vergleichen und erweitern

  Alt 6. Dez 2005, 19:07
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:
DeleteFile(OldFile);
CopyFile(NewFile, OldFile)
beschränken.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
KroKro

Registriert seit: 5. Dez 2005
11 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: *.ini lesen, vergleichen und erweitern

  Alt 7. Dez 2005, 10:12
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!!!!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: *.ini lesen, vergleichen und erweitern

  Alt 7. Dez 2005, 10:28
Hallo Kroko,

um nur fehlende Einträge in einer Steuerdatei zu ergänzen könntest du so vorgehen (ungetestet):

Delphi-Quellcode:
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.
Grüße vom marabu
  Mit Zitat antworten Zitat
KroKro

Registriert seit: 5. Dez 2005
11 Beiträge
 
Delphi 5 Enterprise
 
#7

Re: *.ini lesen, vergleichen und erweitern

  Alt 7. Dez 2005, 10:53
ich werde es mal testen, vielen dank!!!!!!!!!!!
  Mit Zitat antworten Zitat
KroKro

Registriert seit: 5. Dez 2005
11 Beiträge
 
Delphi 5 Enterprise
 
#8

Re: *.ini lesen, vergleichen und erweitern

  Alt 7. Dez 2005, 11:32
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!!!!!!!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz