AGB  ·  Datenschutz  ·  Impressum  







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

TIniFile.Readsectionvalues - Dokumentationsfehler

Ein Thema von idefix2 · begonnen am 9. Jul 2017 · letzter Beitrag vom 9. Jul 2017
Antwort Antwort
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#1

TIniFile.Readsectionvalues - Dokumentationsfehler

  Alt 9. Jul 2017, 12:15
Eben bin ich über einen Fehler in der Dokumentation von ReadSectionvalues gestolpert.

Hat mich einige Zeit gekostet, weil ich vor dem Codieren extra in der Dokumentation nachgeschaut habe und dann den Grund für das unerwartete Verhalten meines Programms erst an allerlei anderen Stellen gesucht habe.

In der Doku steht:
Zitat:
Beschreibung
Liest die Werte aller Schlüssel eines Abschnitts der INI-Datei in eine String-Liste ein.

ReadSectionValues liest die Schlüssel und die Werte aller Schlüssel eines Abschnitts der INI-Datei in ein String-Listenobjekt (TStrings-Nachkomme) ein. Die Schlüsselnamen und die Werte werden der String-Liste hinzugefügt. Diese haben die folgende Form:

<Schlüsselwort> = <Wert> .
Das ist falsch. ReadSectionValues fügt der String-Liste die Werte nicht hinzu, sondern es werden zuerst alle Strings der String Liste gelöscht. Werte, die schon vorher in der String-Liste waren, sind nach ReadSectionValues weg.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TIniFile.Readsectionvalues - Dokumentationsfehler

  Alt 9. Jul 2017, 12:23
Naja, "hinzugefügt" werden sie dennoch, auch wenn vorher vieleicht gelöscht wird.

Alle StringListenFunktionen der INI-Klassen leeren vorher die Liste.
Aber warum hat es dich so viel Zeit gekostet?
Das Verhalten ist doch beim Debuggen sofort zu erkennen (ab dem zweiten Aufruf)


Pssst, wenn du dich auf der Embarcaderowebseite einloggst, dann kannst du selber zur besseren Hilfe beitragen.
http://docwiki.embarcadero.com/Libra...dSectionValues
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 9. Jul 2017 um 12:49 Uhr)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#3

AW: TIniFile.Readsectionvalues - Dokumentationsfehler

  Alt 9. Jul 2017, 15:33
Naja, "hinzugefügt" werden sie dennoch, auch wenn vorher vieleicht gelöscht wird.
So, wie es dort steht, ist es nicht bloß missverständlich, sondern ganz eindeutig falsch. "Hinzugefügt" bedeutet, dass das Bestehende erhalten bleibt.


Alle StringListenFunktionen der INI-Klassen leeren vorher die Liste.
Aber warum hat es dich so viel Zeit gekostet?
Das Verhalten ist doch beim Debuggen sofort zu erkennen (ab dem zweiten Aufruf)
Das Programm ist an einer ganz anderen Stelle, sehr viel später, gecrasht. An die Möglichkeit, dass das Problem schon beim Einlesen des ini-Files entstehen könnte, weil diese Prozedur etwas anderes macht, als man laut Dokumentation erwarten sollte, habe ich recht lange nicht gedacht. Ich habe ja vorher extra noch in der Dokumentation nachgelesen, weil ich mir eben nicht sicher war, ob der Stringlisteninhalt vor dem Einlesen gelöscht wird oder nicht.
Das Debuggen von ereignisgesteuertem Code, noch dazu in Verbindung mit Timern, ist an sich recht mühsam, weil da eben nichts sequentiell abläuft. Nachdem ich dann irgend wann doch diese Routine verdächtigt habe, ist es ohnehin schnell gegangen.

Pssst, wenn du dich auf der Embarcaderowebseite einloggst, dann kannst du selber zur besseren Hilfe beitragen.
http://docwiki.embarcadero.com/Libra...dSectionValues
Ich habe mir jetzt extra einen Account angelegt, aber wo ich da etwas beitragen kann, sehe ich nicht.
  Mit Zitat antworten Zitat
bnreimer42

Registriert seit: 26. Mai 2013
Ort: Erlangen, Franken
124 Beiträge
 
Delphi 12 Athens
 
#4

AW: TIniFile.Readsectionvalues - Dokumentationsfehler

  Alt 9. Jul 2017, 16:05
Ich vermute, Du kannst den Text nicht selber ändern, aber es gibt die Lasche Diskussion.

Dort wäre ein Hinweis einzutragen. Dann kann ein qualifizierter Dokumensch von Embarcadero den Hinweis aufnehmen!
Björn Reimer
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: TIniFile.Readsectionvalues - Dokumentationsfehler

  Alt 9. Jul 2017, 16:36
So, wie es dort steht, ist es nicht bloß missverständlich, sondern ganz eindeutig falsch. "Hinzugefügt" bedeutet, dass das Bestehende erhalten bleibt.
Das ist offensichtlich der Übersetzung geschuldet, die das "Hinzufügen" in einen separaten Satz auslagert. Im Original steht da
Zitat:
The key names and values are added to the string list as strings of the form:
Diese Formulierung stellt direkt auf die Formatierung der "key names and values" ab und vermittelt somit eben nicht direkt den Eindruck, daß die bestehenden Einträge der Stringliste beibehalten werden. Andernfalls würde man statt added den Ausdruck appended verwenden.

Was hälst du von folgender Formulierung, die sich mehr an den Originaltext anlehnt:
Zitat:
Die Schlüsselnamen und die Werte werden in der Form
<Schlüsselname> = <Wert>
in die Stringliste eingetragen.
Wäre das in dieser Form nicht so missverständlich?

Ich habe dabei auch gleich die unterschiedliche Benennung der Names (Schlüsselnamen <> Schlüsselwort) vereinheitlicht. Zusätzlichen Text zur Klarstellung würde ich nur ungern aufnehmen, da ich den zwar noch in der Englischen Version, nicht mehr aber in der Französischen und Japanischen nachpflegen kann.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#6

AW: TIniFile.Readsectionvalues - Dokumentationsfehler

  Alt 9. Jul 2017, 18:29
Ja, ich denke, dann wäre es klar.

Ich hätte ja eigentlich sogar eher damit gerechnet, dass die Stringlist erst gelöscht wird, obwohl es m.E. anders herum sogar besser gewesen wäre: Wenn man gelöscht haben will, genügt der Befehl Clear, während es jetzt etwas umständlich ist, die Werte zu den vorhandenen einer bestehenden Liste hinzuzufügen. Andererseits braucht man das wahrscheinlich nicht so oft.

Ich habe jetzt noch nicht geschaut, aber aus Himitsus Bemerkung schließe ich, dass es auch in der Hilfe zu anderen TIni-Methoden ähnlich formuliert sein könnte.

Zitat:
Zusätzlichen Text zur Klarstellung würde ich nur ungern aufnehmen, da ich den zwar noch in der Englischen Version, nicht mehr aber in der Französischen und Japanischen nachpflegen kann.
Bei der französischen Version kann ich gerne aushelfen, aber bei der japanischen muss ich auch passen.

Geändert von idefix2 ( 9. Jul 2017 um 18:40 Uhr)
  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 10:34 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