Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   JvDbRichEdit und Unicode (https://www.delphipraxis.net/173128-jvdbrichedit-und-unicode.html)

bwolf 8. Feb 2013 10:07

JvDbRichEdit und Unicode
 
Hallo,

ich habe ein JvDBRichEdit in verwendung, bisher ohne Probleme.
Dummerweiße mussten wir die Datenbank auf Unicode umstellen und die Komponente scheint da nicht kompatibel zu sein - es stehen dann falsch encodierte Zeichen im Datenbankfeld.
Das JvDbRichEdit zeigt das dann in der Anwendung zwar richtig an, aber wenn andere Anwendungen darauf zugreifen isses natürlich blöd...
Ich habe mich mal ein bisschen durch den Quellcode der Komponente gelesen, leider ohne großen Erfolg.
Hat jemand einen Tipp oder das JvDbRichEdit selber mit einer Unicode-DB im Einsatz?
Danke für eure Hilfe!

jobo 8. Feb 2013 10:53

AW: JvDbRichEdit und Unicode
 
Ich hab die Komponente nicht im Einsatz, aber der Effekt ist m.E. typisch für eine falsche Zeichensatz Migration.
Das Verhalten ist ggF. auch abhängig von der DB Client Software und natürlich auch der DB selbst.

Einfache Tests wären:
Nun, nach der Umstellung, neue Daten eingeben und prüfen, ob die jetzt nicht nur vom "Quellprogramm" sondern auch von allen anderen richtig dargestellt werden und vice versa.
Ist das der Fall, die "Unicode Migration" unter die Lupe nehmen. Andernfalls die Komponente genauer beleuchten.

bwolf 8. Feb 2013 12:03

AW: JvDbRichEdit und Unicode
 
Hi jobo,
danke für den Hinweis.
Es liegt definitiv an der JV-Komponente...ich werde dann da wohl doch noch tiefer eintauchen müssen.

mjustin 8. Feb 2013 13:17

AW: JvDbRichEdit und Unicode
 
Wie sieht der Text im RTF aus? RTF verwendet intern ASCII. Code Pages Escapes sind zum Beispiel "\'c8", und Unicode Escapes "\u1576"

http://en.wikipedia.org/wiki/Rich_Te...acter_encoding

Kann man den Inhalt des RTF Tabellenfeldes vor und nach der Umstellung vergleichen? Haben sich die Datenbankfeldinhalte verändert?

bwolf 11. Feb 2013 10:42

AW: JvDbRichEdit und Unicode
 
Hi nochmal,

ja die Inhalte kann man Vergleichen - vor der Umstellung ist es lesbarer Text, nach der Umstellung nur noch "chinesisch"...
Das cxDbRichEdit macht es auch richtig, allerdings kann ich die Komponente nicht ohne weiteres austauschen...

mjustin 11. Feb 2013 11:32

AW: JvDbRichEdit und Unicode
 
Zitat:

Zitat von bwolf (Beitrag 1202864)
ja die Inhalte kann man Vergleichen - vor der Umstellung ist es lesbarer Text, nach der Umstellung nur noch "chinesisch"...

Ein Screenshot oder Textbeispiel (RTF ist intern ja Text, und läßt sich mit wenig Aufwand aus dem Datenbankfeld auslesen - Copy & Paste) wäre für die Fehlersuche hilfreich.

Ich meinte natürlich den reinen RTF Code im Datenbankfeld, nicht die Darstellung in einer RTF Komponente. Wenn bei der Umstellung das RTF Feld zerschossen wurde, kann keine Komponente das wieder geradebiegen.

Zitat:

Zitat von bwolf (Beitrag 1202864)
Das cxDbRichEdit macht es auch richtig, allerdings kann ich die Komponente nicht ohne weiteres austauschen...

Das heisst, der RTF Code doch noch korrekt als RichText in der Anwendung darstellbar, wenn man statt JvDbRichEdit ein cxDbRichEdit verwendet?

Wie wird auf das Datenbankfeld zugegriffen (COnnection Encoding), und welchen Datenbank-Feldtyp hat das RTF Feld?

bwolf 11. Feb 2013 13:49

AW: JvDbRichEdit und Unicode
 
Hi nochmal,

ich poste einfach mal den Feldinhalt aus der Datenbank.
Beim cxDbRichEdit sieht das wie folgt aus:

{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}{\f1\fnil Tahoma;}}
\viewkind4\uc1\pard\lang1031\f0\fs16 hallo!\f1\par
}

beim JvDbRichEdit so:

屻瑲ㅦ慜獮屩敤晦笰晜湯瑴汢屻て晜楮屬捦慨獲瑥‰慔潨慭紻ൽ尊楶睥楫摮尴捵就慰摲汜湡ㅧ㌰就て晜ㅳ‶慈汬Ⅿ 灜牡਍ൽ


Zitat:

Das heisst, der RTF Code doch noch korrekt als RichText in der Anwendung darstellbar, wenn man statt JvDbRichEdit ein cxDbRichEdit verwendet?
Richtig - die cx-Komponente stellt es richtig da, auch wenn es mit der JV-Komponente gespeichert wurde.

Das Connection Encoding weiss ich nicht, kann ich bei der ADSConnection gerade nicht finden.
Feldtyp in der Datenbank ist NMemo.

Danke für deine Mühe ;)

mjustin 11. Feb 2013 14:20

AW: JvDbRichEdit und Unicode
 
Zitat:

Zitat von bwolf (Beitrag 1202890)
Beim cxDbRichEdit sieht das wie folgt aus:

{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}{\f1\fnil Tahoma;}}
\viewkind4\uc1\pard\lang1031\f0\fs16 hallo!\f1\par
}

beim JvDbRichEdit so:

屻瑲ㅦ慜獮屩敤晦笰晜湯瑴汢屻て晜楮屬捦慨獲瑥‰慔潨慭紻ൽ尊楶睥楫摮尴捵就慰摲汜湡ㅧ㌰就て晜ㅳ‶慈汬Ⅿ 灜牡਍ൽ

Nun, mit dieser Antwort hatte ich nicht gerechnet :)
Der Datenbank-Feldinhalt ist unabhängig von der darstellenden Komponente. Entweder die beiden Beispiele oben sind aus zwei verschiedenen Datenbankdaten (also zwei verschiedene Records, von denen einer noch in Ordnung ist und korrekten RTF Code enthält, und einer "defekt"). Oder es gibt ein anderes Missverständnis.

Steht

屻瑲ㅦ慜獮屩敤晦笰晜湯瑴汢屻て晜楮屬捦慨獲瑥‰慔潨慭紻ൽ尊楶睥楫摮尴捵就慰摲汜湡ㅧ㌰就て晜ㅳ‶慈汬Ⅿ 灜牡਍ൽ

genau so im Datenbank-Memofeld?

bwolf 11. Feb 2013 14:30

AW: JvDbRichEdit und Unicode
 
Ja, ich habe das 1 zu 1 und aus dem Advantage Data Architect rauskopiert...

Edit:
Um mein vorgehen nochmal zu verdeutlichen:
Ich habe das Memo-Feld geleert, dann in das cxRTF etwa geschrieben und es gepostet. Anschließend wieder geleert, in jvRTF was geschrieben und wieder gepostet...und das war das Ergebnis ;)


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