![]() |
Delphi-Version: XE
Umwandlung von AnsiString und AnsiChar Werten
hallo zusammen...
ich hab gerade mit einer meiner komponenten ein problem, konkret geht es darum das mir deutsch umlaute (äüöß) nicht korrekt im dbgrid angezeigt werden... die stelle an der der fehler passiert habe ich in der komponente gefunden... da die komponente open source ist versuch ich gerade die stelle anzupassen... anbei der originale source code:
Delphi-Quellcode:
wenn ich den source so ausführe erhalte ich z.b. als ergebnis "Test abc"
var
pData: PAnsiChar; ... pData := pAnsiChar(SQLite3_Column_text(theStatement, i)); //SQLite3_Column_text liefert als Return PAnsiChar tu ich über den folgendne source die daten umkonvertieren erhalte ich z.b. in pData nur noch ein "T" versteh aber im moment nicht wieso und wie ich den fehler umgehen kann
Delphi-Quellcode:
var
pData: PAnsiChar; sData: String; ... sData := pAnsiChar(SQLite3_Column_text(theStatement, i)); sData := UTF8ToAnsi(sData) pData := pAnsiChar(sData); |
AW: Umwandlung von AnsiString und AnsiChar Werten
SQLite kann doch Unicode. Könnte es sein das nur deine entsprechende Stelle (fehlerhaft) Ansistrings zurückliefert und die anderen Stellen (korrekt) einen PWideChar?
|
AW: Umwandlung von AnsiString und AnsiChar Werten
ja sqlite kann unicode...
ich mache meinen zugriff über die aducom sqlite komponente... und wenn ich die query daten direkt in einem dbgrid anzeigen lasse, werden mir eben umlaute falsch angezeigt, und meiner meinung nach liegt der fehler genau an dieser einen stelle im source, aber ich kriegs nicht gebacken die daten umzukonvertieren und korrekt ins dataset zu schmeißen :-/ |
AW: Umwandlung von AnsiString und AnsiChar Werten
Zitat:
Ist Ä mit ä vertauscht? Fehlt das ß? Gibt es Kästchen statt Buchstaben? was ist es denn? Gruß K-H |
AW: Umwandlung von AnsiString und AnsiChar Werten
nicht korrekt heißt das mir die umlaute als "hyroglyphen" angezeigt werden z.b. wird beim "ä" ein großes a + enter zeichen ausgegeben und über das utf8toansi kann ich mir das wieder als ä anzeigen lassen
|
AW: Umwandlung von AnsiString und AnsiChar Werten
Zitat:
|
AW: Umwandlung von AnsiString und AnsiChar Werten
so hier jetzt mal ein konkretes bsp.
im dbgrid wird mir "Test äöüß" anstatt "Test äöüß" angezeigt über utf8toansi kann ich mir den wert aber wieder zurück konvertieren damit mir "Test äöüß" angezeigt wird... |
AW: Umwandlung von AnsiString und AnsiChar Werten
dank der hilfe eines kollegens funktioniert die konvertierung jetzt :)
so gehts:
Delphi-Quellcode:
var
pData: PAnsiChar; sData: String; sAnsiData: AnsiString; ... sData := SQLite3_Column_text(theStatement, i); sData := UTF8ToAnsi(sData); sAnsiData := AnsiString(sData); pData := PAnsiChar(PAnsiString(sAnsiData)); |
AW: Umwandlung von AnsiString und AnsiChar Werten
Du castest einen AnsiString in einen PAnsiString? :shock:
Was hat SQLite3_Column_text für einen Result-Type? Wie ist der kodiert? (ANSI, UTF-8 oder ANSI) Und welches Format braucht pData? PWideChar, PAnsiChar+ANSI oder PAnsiChar+UTF-8
Delphi-Quellcode:
sAnsiData := UTF8ToAnsi(SQLite3_Column_text(theStatement, i));
pData := PAnsiChar(sAnsiData); |
AW: Umwandlung von AnsiString und AnsiChar Werten
ja da mir keine andere lösung eingefallen ist...
der rückgabe wert von SQLite3_Column_text steht im source meines ersten beitrages... der typ für pdata steht in den deklarationen ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:49 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 by Thomas Breitkreuz