AGB  ·  Datenschutz  ·  Impressum  







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

Umwandlung von AnsiString und AnsiChar Werten

Ein Thema von Andidreas · begonnen am 6. Sep 2011 · letzter Beitrag vom 7. Sep 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Umwandlung von AnsiString und AnsiChar Werten

  Alt 6. Sep 2011, 14:13
Delphi-Version: XE
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:
var
pData: PAnsiChar;

...

pData := pAnsiChar(SQLite3_Column_text(theStatement, i)); //SQLite3_Column_text liefert als Return PAnsiChar
wenn ich den source so ausführe erhalte ich z.b. als ergebnis "Test abc"

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);
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Umwandlung von AnsiString und AnsiChar Werten

  Alt 6. Sep 2011, 14:14
SQLite kann doch Unicode. Könnte es sein das nur deine entsprechende Stelle (fehlerhaft) Ansistrings zurückliefert und die anderen Stellen (korrekt) einen PWideChar?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Umwandlung von AnsiString und AnsiChar Werten

  Alt 6. Sep 2011, 14:19
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 :-/
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Umwandlung von AnsiString und AnsiChar Werten

  Alt 6. Sep 2011, 14:34
konkret geht es darum das mir deutsch umlaute (äüöß) nicht korrekt im dbgrid angezeigt werden...
Könntest Du "nicht korrekt" einmal näher definieren?
Ist Ä mit ä vertauscht?
Fehlt das ß?
Gibt es Kästchen statt Buchstaben?
was ist es denn?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Umwandlung von AnsiString und AnsiChar Werten

  Alt 6. Sep 2011, 14:46
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
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Umwandlung von AnsiString und AnsiChar Werten

  Alt 6. Sep 2011, 14:48
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
Wie sind die Hex-Werte dieser Zeichen?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: Umwandlung von AnsiString und AnsiChar Werten

  Alt 6. Sep 2011, 14:53
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...
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: Umwandlung von AnsiString und AnsiChar Werten

  Alt 6. Sep 2011, 16:14
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));
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#9

AW: Umwandlung von AnsiString und AnsiChar Werten

  Alt 6. Sep 2011, 16:30
Du castest einen AnsiString in einen PAnsiString?
  • AnsiString = Zeiger auf seine Daten (Chars und Zusatzinfos)
  • PAnsiString = Zeiger auf den Zeiger auf seine Daten/Chars
  • PAnsiChar = Zeiger auf Char/CharArray

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);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 6. Sep 2011 um 16:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

AW: Umwandlung von AnsiString und AnsiChar Werten

  Alt 6. Sep 2011, 16:33
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
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:45 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