Fragen zu XML-Behandlung

Rund um die LCL und andere Komponenten
Mathias
Beiträge: 6194
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Fragen zu XML-Behandlung

Beitrag von Mathias »

Wird dies von fpc auch unterstützt ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: Fragen zu XML-Behandlung

Beitrag von wp_xyz »

Ja. Die xml-Dateien der neuen Office-Dateiformate haben genau diese Art von Nodes, und fpspreadsheet liest diese ohne Probleme, z.B. ein Ausschnitt aus einer ODS-Datei:

Code: Alles auswählen

<office:font-face-decls>
  <style:font-face style:name="Arial" svg:font-family="Arial" style:font-family-generic="swiss" style:font-pitch="variable" /> 
  <style:font-face style:name="Microsoft YaHei" svg:font-family="'Microsoft YaHei'" style:font-family-generic="swiss" style:font-pitch="variable" /> 
  <style:font-face style:name="Lucida Sans Unicode" svg:font-family="'Lucida Sans Unicode'" style:font-family-generic="system" style:font-pitch="variable" /> 
  <style:font-face style:name="Microsoft YaHei1" svg:font-family="'Microsoft YaHei'" style:font-family-generic="system" style:font-pitch="variable" /> 
  <style:font-face style:name="Tahoma" svg:font-family="Tahoma" style:font-family-generic="system" style:font-pitch="variable" /> 
</office:font-face-decls>

Mathias
Beiträge: 6194
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Fragen zu XML-Behandlung

Beitrag von Mathias »

Unterstützt dies auch XMLRead und XMLWrite ?
Oder muss ich dafür fpspreadsheet verwenden ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: Fragen zu XML-Behandlung

Beitrag von wp_xyz »

Ja, die Name-Space-Nodes werden von xmlread/write unterstützt. fpspreadsheet selbst nimmt die UTF8-Versionen in LazUtils, laz2_xmlread/laz2_xmlwrite. (ich weiß nicht, warum FPC bei xml so UTF16-lastig ist).

Mathias
Beiträge: 6194
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Fragen zu XML-Behandlung

Beitrag von Mathias »

Das "laz2_" ist mit untergegangen, obwohl du es hier schon mal geschrieben hast: viewtopic.php?f=10&t=12857&p=113881&hil ... nf#p113881
Jetzt bin ich endlich die widestring Warnungen lös.
(ich weiß nicht, warum FPC bei xml so UTF16-lastig ist).
War nicht bei fcp <3.x das gleiche Theater mit der Unit FileUtil ?
Man musste anstelle von FindFirst, FindFirstUTF8 oder ähnlich schreiben.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Fragen zu XML-Behandlung

Beitrag von Socke »

Mathias hat geschrieben:
Sa 6. Jun 2020, 08:46
(ich weiß nicht, warum FPC bei xml so UTF16-lastig ist).
War nicht bei fcp <3.x das gleiche Theater mit der Unit FileUtil ?
Man musste anstelle von FindFirst, FindFirstUTF8 oder ähnlich schreiben.
Das ist eine leicht andere Thematik. die XML-Units von FPC speichern die Strings im Arbeitsspeicher in UTF16 (Unicodestring), während laz2_xmlread/laz2_xmlwrite im Arbeitsspeicher UTF8 nutzt. UTF8 hat den Vorteil, dass ich beim Lesen und Schreiben von UTF8-formattierten XML-Dateien keine Übersetzung zwischen UTF8 und UTF16 durchführen muss.

Zu FindFirst usw. liegt es ein wenig anders. FPC < 3.x hat die mitgegebenen Dateinamen einfach an das Betriebssystem weitergereicht. Das führt insbesondere dann zu Problemen, wenn du im Programm UTF8 verwendest (wie das bei allen LCL-Anwendungen der Fall ist) aber eine ANSI-Schnittstelle des Betriebssystems aufgerufen wird. In neueren Versionen gibt es z.B. eine Unicodestring-Variante von FindFirst, welche die Unicode-Variante von FindFirst in Windows aufruft.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten