AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio
Thema durchsuchen
Ansicht
Themen-Optionen

Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

Ein Thema von AJ_Oldendorf · begonnen am 2. Jan 2019 · letzter Beitrag vom 4. Jan 2019
Antwort Antwort
Seite 1 von 3  1 23      
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#1

Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 2. Jan 2019, 12:58
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.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.198 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 2. Jan 2019, 13:08
Dann hast du dich bisher auf eine fehlerhafte Implementierung verlassen.

Bei Inidateien gibt es die Regel:

- Jede Sektion darf nur einmal vorkommen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#3

AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 2. Jan 2019, 13:14
ok danke. Dann werde ich das entsprechend anpassen.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.592 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 2. Jan 2019, 13:17
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.198 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 2. Jan 2019, 14:18
In 10.3 wurde die Performance deutlich gesteigert. Es wird nun ein Dictionary für die Sektionen usw. benutzt (was die Eindeutigkeit voraussetzt).
Da diese eigentlich notwendig ist fallen jetzt manche Nutzungen "auf die Nase"

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.
Wenns so viele Einträge werden sollte man eh XML nehmen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.160 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 2. Jan 2019, 15:34
Dann hast du dich bisher auf eine fehlerhafte Implementierung verlassen.

Bei Inidateien gibt es die Regel:

- Jede Sektion darf nur einmal vorkommen.

Gibt es diese Regel wirklich? Ich konnte nie irgendwelche Regeln von Irgendjemand finden. Wikipedia sagt bspw:

Zitat:
Duplicate names
Most implementations only support having one property with a given name in a section. The second occurrence of a property name may cause an abort, it may be ignored (and the value discarded), or it may override the first occurrence (with the first value discarded). Some programs use duplicate property names to implement multi-valued properties.

Interpretation of multiple section declarations with the same name also varies. In some implementations, duplicate sections simply merge their properties, as if they occurred contiguously. Others may abort, or ignore some aspect of the INI file.
Quelle
(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.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.198 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 2. Jan 2019, 15:40
Die deutsche Wikipedia sagt das

https://de.wikipedia.org/wiki/Initialisierungsdatei
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#8

AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 2. Jan 2019, 16:03
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:
[Sektion1]
Schlüssel1=Wert1

[Sektion2]
Schlüssel1=Wert2

[Sektion1]
Schlüssel1=Wert3
wenn man Sektion1 und Schlüssel1 abfragt?

Allerdings sehe ich (logisch) kein Problem, wenn eine Sektion doppelt auftaucht
Code:
[Sektion1]
Schlüssel1=Wert1

[Sektion2]
Schlüssel1=Wert2

[Sektion1]
Schlüssel2=Wert3
ist halt nur unübersichtlich für den menschlichen Betrachter und wäre so schöner und kompakter
Code:
[Sektion1]
Schlüssel1=Wert1
Schlüssel2=Wert3

[Sektion2]
Schlüssel1=Wert2
IMHO Könnte man beim Lesen diese zerfledderten Sektionen berücksichtigen/zulassen.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.491 Beiträge
 
Delphi 7 Professional
 
#9

AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 2. Jan 2019, 16:26
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:

https://github.com/SemaiCZE/inicpp/w...-specification

https://mozilla-services.readthedocs.../confspec.html

https://tech-insider.org/windows/res...0221/1INIW.pdf
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 2. Jan 2019, 21:26
Hallo,
Zitat:
Dann hast du dich bisher auf eine fehlerhafte Implementierung verlassen.
Naja, diese Aussage lasse ich mal unkommentiert.

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.
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 20:35 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