Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XE2 /TXMLIniFile (https://www.delphipraxis.net/166301-delphi-xe2-txmlinifile.html)

UliBru 7. Feb 2012 10:27

Delphi XE2 /TXMLIniFile
 
Hallo,
ich überleg mir gerade, ob ich nicht mal testen sollte XML anstelle INI zu verwenden. Das Delphi XE2 hat im Beiwerk auch die Unit Xml.XMLIniFile.pas. Da drin sind dann auch die üblichen Funktionen wie ReadString, WriteString etc. enthalten (na ja, ReadFloat gibt es z.B. nicht).
Was mir aber unklar ist:
Mit ini := TIniFile.Create(Dateiname) wird klar der Bezug zu einer Datei festgelegt. Das gibt es bei TXMLIniFile aber nicht. Ich finde auch im Quellcode keine Dateioperation. Create ist definiert als constructor Create(const ANode: IXmlNode);
Wie geht das denn zu verwenden?

Gruss, Uli

jaenicke 7. Feb 2012 10:35

AW: Delphi XE2 /TXMLIniFile
 
Die Klasse ist nur eine Notlösung um bestehende INI-Strukturen abzubilden. Wenn du es gerade neu machst, mach es lieber gleich richtig als XML-Dokument, da hast du viel mehr Möglichkeiten. ;-)

Ein kleines Beispiel findest du hier:
http://www.delphipraxis.net/49100-xml-speichern.html#3

Sir Rufo 7. Feb 2012 10:38

AW: Delphi XE2 /TXMLIniFile
 
Wie kommst du darauf, dass
Delphi-Quellcode:
ReadFloat
nicht enthalten sein sollte?

TXmlIniFile erbt doch von TCustomIniFile und ReadFloat ist dort implementiert.
Man kann das überschreiben (ist virtual) aber man muss nicht.

UliBru 7. Feb 2012 10:53

AW: Delphi XE2 /TXMLIniFile
 
Zitat:

Zitat von jaenicke (Beitrag 1149620)
Die Klasse ist nur eine Notlösung um bestehende INI-Strukturen abzubilden. Wenn du es gerade neu machst, mach es lieber gleich richtig als XML-Dokument, da hast du viel mehr Möglichkeiten. ;-)

Ein kleines Beispiel findest du hier:
http://www.delphipraxis.net/49100-xml-speichern.html#3

Danke, schau ich mir an. Ich will aber eigentlich kein Studium über Syntax/Möglichkeiten/Fallstricke von XML beginnen. Bisher war ich mit ini klargekommen. Und wenn ich in die Hilfe bezgl. XMLDocument reinschaue, erschlägt es einen ja zuerst einmal.

Zitat:

Zitat von Sir Rufo (Beitrag 1149621)
Wie kommst du darauf, dass
Delphi-Quellcode:
ReadFloat
nicht enthalten sein sollte?

TXmlIniFile erbt doch von TCustomIniFile und ReadFloat ist dort implementiert.
Man kann das überschreiben (ist virtual) aber man muss nicht.

Nun, z.B. ReadInteger wird intern mit ReadXmlString über Nodes und all das Zeugs für das XML aufbereitet. Das klappt dann bei ReadFloat plötzlich ohne? :-D

Grüsse, Uli

Sir Rufo 7. Feb 2012 11:30

AW: Delphi XE2 /TXMLIniFile
 
Zitat:

Zitat von UliBru (Beitrag 1149629)
Zitat:

Zitat von Sir Rufo (Beitrag 1149621)
Wie kommst du darauf, dass
Delphi-Quellcode:
ReadFloat
nicht enthalten sein sollte?

TXmlIniFile erbt doch von TCustomIniFile und ReadFloat ist dort implementiert.
Man kann das überschreiben (ist virtual) aber man muss nicht.

Nun, z.B. ReadInteger wird intern mit ReadXmlString über Nodes und all das Zeugs für das XML aufbereitet. Das klappt dann bei ReadFloat plötzlich ohne? :-D

Grüsse, Uli

Dann schau dir mal die Implementierung von
Delphi-Quellcode:
TCustomIniFile.ReadFloat
und
Delphi-Quellcode:
TCustomIniFile.WriteFloat
an, dann verstehst du auch, warum das funktioniert ;)

UliBru 7. Feb 2012 16:20

AW: Delphi XE2 /TXMLIniFile
 
Also ReadInteger benutzt zum einen ReadString in der IniFile Unit bzw. ReadXMLString in der XMLIniFile Unit. Beide Routinen zum Lesen es Strings sehen aber sehr unterschiedlich aus mit unterschiedlichen Variablentypen. Die XML-Geschichte für mich aufwendiger.
Nun verwendet das ReadFloat in der Inifile ebenfalls das ReadString. Wenn das auch für XML reicht, dann täte es dies auch für ReadInteger, da wird aber ReadXMLString verwendet.
Das beisst sich doch oder?

Grüsse, Uli


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:53 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