AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

ClientDataSet mit XML und UTF8

Ein Thema von urdelphist · begonnen am 29. Sep 2017 · letzter Beitrag vom 7. Okt 2017
Antwort Antwort
Seite 1 von 3  1 23   
urdelphist

Registriert seit: 20. Sep 2007
14 Beiträge
 
#1

ClientDataSet mit XML und UTF8

  Alt 29. Sep 2017, 14:23
Hallo,
ich verwende XE3 und UTF8-kodierte XML Dateien und lese diese Mittels XMLDocument, XMLTransformProvider und ClientDataSet ein, sodaß alle Data-Aware Komponenten so funktionieren, als würden die Daten aus einer Datenbank stammen (XML ist ja dann quasi eine). Für den XMLransformProvider wurden die entsprechenden Transformations-Dateien (XTR) mit XMLMapper erzeugt.
Funktioniert soweit wie erwartet, aber leider nicht, wenn Umlaute ins Spiel kommen.
Ich habe einiges ausprobiert, aber noch keine Möglichkeit gefunden, die fehlerhafte Anzeige in den TDBEdit Komponenten zu beseitigen. Es werden die Umlaute (manchmal erst beim zweiten Laden!) korrekt dargestellt. Wenn nicht, werden die UTF8-Entsprechungen angezeigt also zum Beispiel statt "äää" im XML wird "äää" angezeigt. Wenn man in dieses Feld klickt wird daraus unmittelbar "äää". Nachdem der Fokus dieses Feld verlässt, wird dort "���" angezeigt. Die Werte werden aber korrekt in die Datenbank übernommen. Allerdings nur in diesem Feld. Alle anderen, die Umlaute enthalten werden falsch kodiert zurückgeschrieben.
Bin mir noch nicht sicher, wo genau die Konvertierung bzw. der Fehler stattfindet. Vielleicht sind es die visuellen Komponenten. Die automatisch erzeugten Felder für das ClientDataSet sind vom Typ TStringField. Diese Klasse hat ein Feld Value, welches vom Typ AnsiString ist.

Für Hilfe wäre ich sehr dankbar.
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.440 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: ClientDataSet mit XML und UTF8

  Alt 29. Sep 2017, 18:31
Hm, wie wäre es mit debuggen? Und wenn das nicht hilft loggen?
  Mit Zitat antworten Zitat
hoika

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

AW: ClientDataSet mit XML und UTF8

  Alt 30. Sep 2017, 07:58
Hallo,
die letzten beiden Sätze enthalten doch schon die Ursache.
Also hat die automatische Ermittlung der Feldtypen nicht ganz geklappt.

AnsiString ist definitiv falsch -> Ändern
Heiko

Geändert von hoika ( 1. Okt 2017 um 05:15 Uhr)
  Mit Zitat antworten Zitat
urdelphist

Registriert seit: 20. Sep 2007
14 Beiträge
 
#4

AW: ClientDataSet mit XML und UTF8

  Alt 30. Sep 2017, 18:10
Danke schon mal für die Beiträge.

Ganz so einfach ist es leider nicht. Wenn einfach nur die Datentypen falsch wären, müsste es zu einer konsistent falschen Anzeige kommen. Das ist aber nicht der Fall.

Debugging ist auch nicht ganz so trivial, da es schon recht tief in die VCL geht und ich vieles nicht mehr verstehe.
Ich hatte gehofft, dass dieses vielleicht vor mit jemand gelöst hätte. Manchmal sind ja nur Kleinigkeiten, die man übersieht. Schliesslich werkerln da einige Komponenten zusammen....
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: ClientDataSet mit XML und UTF8

  Alt 30. Sep 2017, 18:30
Am Einfachsten von UTF8 noch ASCII konvertieren oder nach UCS-2 (WideString)
Markus Kinzler
  Mit Zitat antworten Zitat
urdelphist

Registriert seit: 20. Sep 2007
14 Beiträge
 
#6

AW: ClientDataSet mit XML und UTF8

  Alt 30. Sep 2017, 18:34
UTF8 To Ansi geht ja auch, aber eben nicht zusammen mit diesen Komponenten. An keiner vernünftigen Stelle kann man da eingreifen.
Interessanterweise werden nicht mal die Methoden "OnGetText" und "OnSetText" der DatenbankObjekte dann aufgerufen, wenn man meint, dass sie aufgerufen werden müssten. So wie ich das sehen, werden die nur ein einziges Mal aufgerufen, was ich nicht verstehe.

Ich habe mich schon einige Stunden damit auseinandergesetzt und eine "einfache" Lösung, d.h. eine Konvertierung irgendwo geht eben genau nicht.
Vielleicht stelle ich mal ein einfaches Beispiel so zusammen, dass ich den Code hier posten kann.

PS: ich habe das gerade mal unter XE 10.2.1 Tokyo getestet - identisches Verhalten

Geändert von urdelphist (30. Sep 2017 um 18:51 Uhr)
  Mit Zitat antworten Zitat
urdelphist

Registriert seit: 20. Sep 2007
14 Beiträge
 
#7

AW: ClientDataSet mit XML und UTF8

  Alt 1. Okt 2017, 11:14
So, damit es sicher jeder, der möchte, ansehen kann, habe ich ein kleines Testprojekt mit dem beschriebenen Problem hochgeladen.
Darin werden erstmal keine Konvertierungen automatisch vorgenommen, also verhält es sich unverändert.
Angehängte Dateien
Dateityp: zip xmltest.zip (166,4 KB, 16x aufgerufen)

Geändert von urdelphist ( 1. Okt 2017 um 11:19 Uhr)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#8

AW: ClientDataSet mit XML und UTF8

  Alt 1. Okt 2017, 12:21
Kann das Projekt mit einer Professional Version oder nur mit einer der "größeren" Delphi-Editionen getestet werden? (ich nehme an, das die XTR Unterstützung in Professional nicht enthalten ist, Tester müssten daher eine Edition > Professional besitzen)
Michael Justin

Geändert von mjustin ( 1. Okt 2017 um 12:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.188 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: ClientDataSet mit XML und UTF8

  Alt 1. Okt 2017, 13:54
Am Einfachsten von UTF8 noch ASCII konvertieren oder nach UCS-2 (WideString)
WideString war nur unter Windows NT UTC-2. Seit 2000 ist der WideString UTF-16-Codiert.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
urdelphist

Registriert seit: 20. Sep 2007
14 Beiträge
 
#10

AW: ClientDataSet mit XML und UTF8

  Alt 3. Okt 2017, 23:51
Das Projekt wurde unter XE3 Professional bearbeitet und gespeichert. Inwieweit andere Versionen damit umgehen können, weiß ich aktuell nicht. Die aktuellste Demo (ist immer wohl die höchste Version), kann es öffnen.

Dank & Gruß
  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 11:59 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