AGB  ·  Datenschutz  ·  Impressum  







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

ClientDataSet mit XML und UTF8

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

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

AW: ClientDataSet mit XML und UTF8

  Alt 3. Okt 2017, 22: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
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.118 Beiträge
 
Delphi 2009 Professional
 
#2

AW: ClientDataSet mit XML und UTF8

  Alt 3. Okt 2017, 23:12
Was soll dieses UTF8ToString bringen (außer dass sich der Compiler zurecht darüber beschwert)? Da ist weit und breit kein UTF-8 in dem Programm, du verwendest ausschließlich WideStrings und UTF-8 kommt standardmäßig in Delphi-Anwendungen überhaupt nicht vor. Das ergibt doch überhaupt keinen Sinn und ohne das funktioniert das Programm dann auch vernünftig. Zumindest unter D2009. Das entsprechende Kompilat ist angehängt. Einzige Änderung ist das Entfernen von UTF8ToString in der einen Zeile und das Entfernen von Namespaces, da D2009 so gut wie keine Namespaces kennt.

/Edit: Ups, falscher Anhang (war das fehlerhafte Programm).
Angehängte Dateien
Dateityp: 7z Project1.7z (348,5 KB, 8x aufgerufen)
Janni
2005 PE, 2009 PA, XE2 PA

Geändert von Redeemer ( 3. Okt 2017 um 23:14 Uhr)
  Mit Zitat antworten Zitat
urdelphist

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

AW: ClientDataSet mit XML und UTF8

  Alt 4. Okt 2017, 14:03
Naja, im Programm kommt es nicht vor, aber in der XML-Datei, die zu importieren ist.

BTW, mein Screenshot mit exakt denselben Daten sieht etwas anders aus. Wenn konvertiert wird, ist die Ansicht teilweise korrekt, aber eben nicht immer, siehe oben.
Angehängte Grafiken
Dateityp: png XE3.png (10,8 KB, 20x aufgerufen)

Geändert von urdelphist ( 4. Okt 2017 um 15:30 Uhr)
  Mit Zitat antworten Zitat
urdelphist

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

AW: ClientDataSet mit XML und UTF8

  Alt 4. Okt 2017, 14:05
und nochmal: die Zeichenketten, die die Datenelemente des ClientDataSet repräsentieren, sind vom Typ AnsiString. Vielleicht ist das bei D2009 ja anders.
Insofern macht die Konvertierung von UTF8 nach Ansi sehr wohl Sinn.

UTF8ToString wird ja beim Laden nicht benutzt. Einzig dann, wenn über den Button2 eine Knovertierung versucht werden soll.

Wie man am Screenshot erkennen kann, klappt selbst das unkonvertierte Einlesen überhaupt nicht.
Dein Erfolgsfall wird wohl an der Delphi Version liegen.

Geändert von urdelphist ( 4. Okt 2017 um 14:10 Uhr)
  Mit Zitat antworten Zitat
urdelphist

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

AW: ClientDataSet mit XML und UTF8

  Alt 4. Okt 2017, 14:20
@Redeemer:

Bitte schau doch mal nach, welchen Typ die ClientDataSet Datenelemente haben, also zum Beispiel "ClientDataSet1company". Dieses ist hier vom Typ TStringField, welches die Eigenschaft Value vom Typ AnsiString hat. Wenn es bei D2009 als WideString definiert ist, könnte ich die VCL eventuell anpassen. Wobei das ziemlich umständlich werden könnte, weil da etliche Dateien von abhängen, die im Interface als Antwort AnsiString erwarten.
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.118 Beiträge
 
Delphi 2009 Professional
 
#6

AW: ClientDataSet mit XML und UTF8

  Alt 4. Okt 2017, 17:36
Das ist auch in D2009 ein AnsiString. Daher können Nicht-Ansi-Zeichen auch nicht angezeigt werden. Die vorliegende XML-Datei enthält nur ANSI-Zeichen.
Ist ja schön, dass die XML in UTF-8 ist, aber das Programm hat mit der XML-Datei doch überhaupt nichts am Hut. Das wird irgendwie vom XMLTransformProvider1 gehandelt, wie interessiert einen nicht. Du solltest eher mal schauen, wie man das Teil dazu kriegt, UTF-8 zu unterstützen. In Delphi 2009 funktioniert das sofort. Da die entsprechenden Komponenten aber nicht Unicode-fähig sind, kannst du natürlich auch die XML in ANSI abspeichern...
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
urdelphist

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

AW: ClientDataSet mit XML und UTF8

  Alt 4. Okt 2017, 22:01
Hm, das sehe ich etwas anders.

Die beiliegende XML-Datei ist keine ANSI-Datei! Einfach mal mit einem HEX-Editor öffnen, schon sieht man, dass die Umlaute mit 16 Bit kodiert sind. Ganz simples UTF8.

Der Fehler liegt vermutlich in der Umsetzung des ganzen Unicode-Getöses.

In der Datei DB.data.pas habe ich an einer Stelle gefunden (getter/setter Methoden), dass explizit TEncoder.ANSI benutzt wird. Das habe ich mal testweise auf UTF8 umgestellt, schon klappt das Laden einwandfrei. Nur das Speichern noch nicht, wo wahrscheinlich das gleiche Problem nochmal auftritt. Trotz der von mir geänderten Konvertierung dort werden zwar die Bytes des UTF8-Strings erzeugt, aber nicht korrekt in die XML-Datei geschrieben.

EDIT die Datei heißt data.db.pas

Geändert von urdelphist ( 4. Okt 2017 um 22:10 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 17:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz