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

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 3 von 3     123
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#21

AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 3. Jan 2019, 16:15
Also damit wir alle über die gleiche Problematik sprechen:
Kannst du den Fall und dein Testprogramm auf quality.embarcader.com hochlanden/Melden?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#22

AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 3. Jan 2019, 16:59
Kannst du den Fall und dein Testprogramm auf quality.embarcader.com hochlanden/Melden?
Dazu müsste aber auch eine Aussage zu dem gewünschten Verhalten gehören. Insbesondere gibt das Programm ja weder mit TIniFile noch mit TMemIniFile unter Tokyo den eigentlichen Dateiinhalt korrekt wieder. Die dritte Section (die zweite S1) wird zwar ausgegeben, aber mit dem Inhalt der ersten S1 (warum dann überhaupt), während TMemInifile unter Rio die beiden Sections zusammenfasst. Auch lässt sich in Rio mit TMemIniFile der Wert für ReadString('S1', 'k3', '') auslesen. Das Verhalten von TIniFile und das von TMemIniFile unter Tokyo erscheint mir gerade an diesem Beispiel eher zweifelhaft.

Um das Verhalten zu konsolidieren, würde ich eher eine konsistente Implementierung von TIniFile als Spezialisierung von TMemIniFile auch unter Windows vorziehen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#23

AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 3. Jan 2019, 17:12
Für das Verhalten von TIniFile unter Windows kann Delphi nicht wirklich etwas, das ist das Verhalten der WinAPI.

Aber wie Uwe schon sagte, es bleibt zu klären, wie es denn jetzt funktionieren soll.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 3. Jan 2019, 17:15
Um das Verhalten zu konsolidieren, würde ich eher eine konsistente Implementierung von TIniFile als Spezialisierung von TMemIniFile auch unter Windows vorziehen.
Das hätte auch den Vorteil, dass TIniFile noch funktioniert, falls Microsoft die veralteten Windows 3.x APIs dafür doch mal rauswirft...

Noch sinnvoller wäre aber wohl ein optionaler XML-Adapter oder so um das ganze leicht in ein moderneres Format zu bringen...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
Ort: Stadthagen
382 Beiträge
 
Delphi 10.3 Rio
 
#25

AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 3. Jan 2019, 21:06
Da habe ich ja eine Diskussion losgetreten
Ich nutze meine Konstruktion mit TMemIniFile nur zum lesen der Datei, ich speichere darin nichts ab, habe ich mir jetzt einfach die "alte" Variante von TMemIniFile (< 10.3 Rio) nachgebaut und nutze diese Klasse. Damit geht alles wie vorher auch. Übrigens war das Verhalten von TMemIniFile in Tokyo auch das gleiche Verhalten wie in allen Versionen davor auch. Also nicht Tokyo hatte die "falsche" Implementierung sondern Rio ist die erste Version, die es "richtig" macht.
Ob richtig oder nicht, kann sich jeder selber überlegen bzw. es nutzen wie man es eben braucht
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.882 Beiträge
 
Delphi 12 Athens
 
#26

AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 4. Jan 2019, 13:09
TMemIniFile basierte auf TStringList (zumindest noch vor Rio).
Hab jetzt nicht gecheckt was genau da in Rio wohl umgebaut worden ist.

Zitat:
Anmerkung: Beim Parameter Name wird nicht zwischen Groß- und Kleinschreibung unterschieden. Die Eigenschaft Values liefert also den Wert des ersten gefundenen Strings, dessen Zeichenkombination (ohne Berücksichtigung der Schreibweise) dem angegebenen Name entspricht.
Wenn ich eine Implementierung einsetze schaue ich auch immer mal kurz unter die Haube, um zu verstehen was da wohl abgeht.
Das mehrere gleiche Sections Probleme machen können sollte auch vom Einsatz der ursprünglichen TStringList als Basis klar gewesen sein.

Wenn das nun unbedingt gebraucht wird, würde ich versuchen das alte Verhalten mit TStringLists in einer eigenen Klasse oder Ableitung nachzubilden.

Rollo
  Mit Zitat antworten Zitat
hoika

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

AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 4. Jan 2019, 13:17
Hallo,
Zitat:
Wenn ich eine Implementierung einsetze schaue ich auch immer mal kurz unter die Haube, um zu verstehen was da wohl abgeht.
Ich benutze OpenSSL, schaue aber nicht unter die Haube, weil es mir zu kompliziert ist

Aber Unit-Tests sollten sowas finden (wenn man überhaupt davon ausgeht, das das was schiefgehen kann...)
Heiko
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 4. Jan 2019, 13:28
Aber Unit-Tests sollten sowas finden (wenn man überhaupt davon ausgeht, das das was schiefgehen kann...)
Wenn man ein paar mal die Erfahrung gemacht hat fängt man tatsächlich an Unit-Tests für die Embarcadero-RTL zu schreiben. Das sollte bei einem mehrere tausend Euro teuren Produkt eigentlich der Hersteller selbst übernehmen aber naja
  Mit Zitat antworten Zitat
hoika

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

AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 4. Jan 2019, 13:37
Hallo,
wenn die das mit den Unit-Tests nicht machen würden, würde gar nichts nach einem Update funktionieren.
Aber auch das Schreiben von guten Unit-Tests muss gelernt sein.

Aber schön wäre auch mal das Compilieren der IDE mit FastMM4...
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#30

AW: Unterschied TMemIniFile 10.2 Tokyo / 10.3 Rio

  Alt 4. Jan 2019, 14:48
Aber Unit-Tests sollten sowas finden (wenn man überhaupt davon ausgeht, das das was schiefgehen kann...)
Das würde voraussetzen, daß das gewünschte Verhalten auch irgendwo beschrieben ist. Unit-Tests finden in der Regel nur Fehler, die man schon mal hatte oder von vornherein ausschließen will. Ich bin mir ziemlich sicher, daß es für TMemIniFile bereits einige Unit-Tests gibt. Allerdings wird vermutlich keiner davon mit mehreren Sections gleichen Namens arbeiten, denn dann wäre diese Problematik ja bewusst und sowohl dokumentiert als auch konsistent implementiert. In diesem Fall ist das Problem also nicht fehlende Unit-Tests, sondern eher das fehlende Bewusstsein für dieses Szenario.

Um nochmal auf das ursprüngliche Verhalten von TMemIniFile anhand des obigen Testprogramms zurückzukommen: Die zweite Section wird zwar bei ReadSections aufgelistet, an ihren Inhalt kommt man aber weder mit ReaadString noch ReadSectionValues ran (gleiches gilt auch für TIniFile). Wozu sollte das zweite Vorkommen dieser Section denn nun überhaupt gut sein? Eigentlich müsste man bei ReadSections diese Doublette doch besser gleich entfernen (oder eine Exception werfen). Dann hat man aber faktisch dasselbe Verhalten, als ob die doppelte Section gar nicht in der INI vorhanden wäre.

In Rio wird dieses Verhalten (bewusst oder unbewusst) geändert in der Art, daß zwar die doppelte Section nicht mehr aufgeführt wird, deren Werte aber jetzt zur Verfügung stehen. Als Nebeneffekt wird beim Schreiben von TMemInifile auch noch implizit eine Normalisierung durchgeführt, bei der die doppelten Sections in einer zusammengefasst werden. Ich finde dieses Verhalten wesentlich realistischer und auch sinnvoller, wobei ich ziemlich sicher bin, daß dies nicht wirklich der Grund für diese Änderung war, sondern es sich eher um einen Nebeneffekt handelt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:40 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