AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Ini.ReadSectionValues mit mehreren gleichen Names
Thema durchsuchen
Ansicht
Themen-Optionen

Ini.ReadSectionValues mit mehreren gleichen Names

Ein Thema von Helmi · begonnen am 16. Jul 2017 · letzter Beitrag vom 16. Jul 2017
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#1

Ini.ReadSectionValues mit mehreren gleichen Names

  Alt 16. Jul 2017, 16:44
Hallo,

folgende Ausgangssituation:
Ich hab eine INI-Datei, in der Definitionen für eine Oberfläche stehen (so grob gesagt).
Dabei schaut eine Section beispielhaft wie folgt aus:
Code:
[Input]
ID_INPUT_Eingabe10={Left=180;Top=35;TextColor=255,255,0;BackgroundColor=200,200,200;Height=45;Width=100}
ID_INPUT_Eingabe11={Left=180;Top=100;TextColor=0,0,0;BackgroundColor=255,225,200;Height=45;Width=100}
ID_INPUT_Eingabe10={Left=0;Top=0;TextColor=255,255,0;BackgroundColor=200,200,200;Height=45;Width=50}
Wie man sieht hab ich mehrere gleiche Names (was für mich ok ist).

Mit Ini.ReadSectionValues les ich den Inhalt von "Input" ein.

Nach dem Einlesen hab ich zwar in der StringList die gleiche Names, nur bei dem letzten "ID_INPUT_Eingabe10" den Wert (Value) vom ersten Eintrag.

Schau ich mir den Code hinter "ReadSectionValues" an, so ist das klar, da in ReadSection nach dem Namen gesucht wird und dieser ist schon an erster Stelle vorhanden.
Delphi-Quellcode:
procedure TIniFile.ReadSectionValues(const Section: string; Strings: TStrings);
var
  KeyList: TStringList;
  I: Integer;
begin
  KeyList := TStringList.Create;
  try
    ReadSection(Section, KeyList);
    Strings.BeginUpdate;
    try
      Strings.Clear;
      for I := 0 to KeyList.Count - 1 do
        Strings.Add(KeyList[I] + '=' + ReadString(Section, KeyList[I], ''))
    finally
      Strings.EndUpdate;
    end;
  finally
    KeyList.Free;
  end;
end;
Wie kann ich den gesamten "Inhalt" der Section auslesen? - so, wie es in der Section auch steht (trotz gleicher Names)?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#2

AW: Ini.ReadSectionValues mit mehreren gleichen Names

  Alt 16. Jul 2017, 17:22
Ich behaupte: mit TIniFile gar nicht. Innerhalb einer Section sollen die Keys eindeutig sein, sind sie das nicht, kommt es zu dem von Dir geschilderten Phänomen. Du wirst Dir also selbst etwas schreiben müssen, das die Werte zu einem Schlüssel dann nicht als Einzelwert, sondern als Wertliste einliest.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Ini.ReadSectionValues mit mehreren gleichen Names

  Alt 16. Jul 2017, 17:29
Ich behaupte: mit TIniFile gar nicht.
die Antwort hab ich irgendwie erwartet

IniFiles macht es ja eigentlich erstmal richtig, jedenfalls bei den Names, nur bei den Values geht's schief.

[Edit]
Ich hab jetzt MemIniFile ausprobiert
und dort funktioniert es so, wie ich es brauche
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<

Geändert von Helmi (16. Jul 2017 um 17:33 Uhr)
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#4

AW: Ini.ReadSectionValues mit mehreren gleichen Names

  Alt 16. Jul 2017, 17:38
Zitat:
Ich hab jetzt MemIniFile ausprobiert
und dort funktioniert es so, wie ich es brauche
Wenn du die Autosave-Funktion noch nicht drin hast, sodass du kein Ini.Update; aufrufen musst nach einem Write, dann schreibe dir am besten eine Interposer-Klasse mit einem überschriebenem Destroy und dort rufst du Update vorher auf.
Dann ist die Handhabung von TMemIniFile und IniFile quasi gleich.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Ini.ReadSectionValues mit mehreren gleichen Names

  Alt 16. Jul 2017, 17:43
Zitat:
Ich hab jetzt MemIniFile ausprobiert
und dort funktioniert es so, wie ich es brauche
Wenn du die Autosave-Funktion noch nicht drin hast, sodass du kein Ini.Update; aufrufen musst nach einem Write, dann schreibe dir am besten eine Interposer-Klasse mit einem überschriebenem Destroy und dort rufst du Update vorher auf.
Dann ist die Handhabung von TMemIniFile und IniFile quasi gleich.
Ich lese nur aus der Ini-Datei, schreibe aber nicht rein.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#6

AW: Ini.ReadSectionValues mit mehreren gleichen Names

  Alt 16. Jul 2017, 17:50
Zitat:
Ich lese nur aus der Ini-Datei, schreibe aber nicht rein.
Umso besser - weniger Stress.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#7

AW: Ini.ReadSectionValues mit mehreren gleichen Names

  Alt 16. Jul 2017, 17:53
Zitat:
Ich lese nur aus der Ini-Datei, schreibe aber nicht rein.
Umso besser - weniger Stress.
ja, von daher war es jetzt nicht tragisch von IniFile auf MemIniFile zu wechseln
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#8

AW: Ini.ReadSectionValues mit mehreren gleichen Names

  Alt 16. Jul 2017, 20:09
ja, von daher war es jetzt nicht tragisch von IniFile auf MemIniFile zu wechseln
Bis Embarcadero mal diesen "Bug" behebt.

Aber keine Sorge, das passiert eh nicht.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 04:46 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