![]() |
Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio
Hallo zusammen,
einige Funktionen in TMemIniFile laufen unterschiedlich zwischen 10.2 Tokyo und 10.3 Rio. z.B. ReadSectionValues und EraseSection In 10.2 wird immer nur eine Section eingelesen und zurückgeliefert (ReadSectionValues), bei 10.3 Rio wird die komplette IniDatei mit allen Sections zurückgeliefert. EraseSection löscht in 10.2 auch nur eine Section, in 10.3 alle Sections in der Ini Datei. Problem ist, dass in meiner Ini Datei der Section-Name mehrmals vorkommt. Also mehrere Sections mit dem gleichen Namen. Gibt es dafür in 10.3 irgendwelche Funktionen, die das gleiche Verhalten wie unter 10.2 liefern oder muss ich mein QT jetzt überall anpassen? Gefunden habe ich so schnell nichts im Sourcecode von 10.3. |
AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio
Dann hast du dich bisher auf eine fehlerhafte Implementierung verlassen.
Bei Inidateien gibt es die Regel: - Jede Sektion darf nur einmal vorkommen. |
AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio
ok danke. Dann werde ich das entsprechend anpassen.
|
AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio
In 10.3 wurde die Performance deutlich gesteigert. Es wird nun ein Dictionary für die Sektionen usw. benutzt (was die Eindeutigkeit voraussetzt).
Windows selbst hat damals zu Zeiten der massenhaften INI-Dateien dann solche Sektionen mit Indizes versehen, z.B. [Section1], [Section2], ... und dazu gab es zumindest teilweise eine Verwaltungssektion mit der Anzahl. |
AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio
Zitat:
Zitat:
|
AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio
Zitat:
Gibt es diese Regel wirklich? Ich konnte nie irgendwelche Regeln von Irgendjemand finden. Wikipedia sagt bspw: Zitat:
![]() (Hervorhebung durch mich) Demnach wäre eine Ini-Datei mit mehreren gleichnamigen Sektionen nicht fehlerhaft. Und die Änderung von 10.2 auf 10.3 wäre eine Verhaltensänderung. |
AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio
|
AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio
Grundsätzlich geht es (wie fast immer) um die Eindeutigkeit.
Eindeutig muss hier die Kombination aus Sektion und Schlüssel sein, oder welchen Wert würde man von dieser INI erwarten
Code:
wenn man Sektion1 und Schlüssel1 abfragt?
[Sektion1]
Schlüssel1=Wert1 [Sektion2] Schlüssel1=Wert2 [Sektion1] Schlüssel1=Wert3 Allerdings sehe ich (logisch) kein Problem, wenn eine Sektion doppelt auftaucht
Code:
ist halt nur unübersichtlich für den menschlichen Betrachter und wäre so schöner und kompakter
[Sektion1]
Schlüssel1=Wert1 [Sektion2] Schlüssel1=Wert2 [Sektion1] Schlüssel2=Wert3
Code:
IMHO Könnte man beim Lesen diese zerfledderten Sektionen berücksichtigen/zulassen.
[Sektion1]
Schlüssel1=Wert1 Schlüssel2=Wert3 [Sektion2] Schlüssel1=Wert2 |
AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio
Es gibt viele Implementierungen, die auch mit fehlerhaften INI-Dateien zurecht kommen oder auch fehlerhafte erstellen.
Die Definition dessen, was in INI-Dateien (für gewöhnlich) zulässig ist und was nicht, kann man hier ganz gut nachlesen: ![]() ![]() ![]() |
AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio
Hallo,
Zitat:
Ich erinnere an die Einführung von TStringList.StrictDelimiter, um die alte, "fehlerhafte" (?) Implementierung und vor allem die Anwendungen nicht zu brechen. Wenn TMemIniFile früher falsch implementiert war, gut (oder auch nicht). Aber das Verhalten einer Komponente, was sie seit Äonen (*übertreib*) hat, einfach zu ändern, tztz. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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 by Thomas Breitkreuz