![]() |
Re: Türkische Zeichen
Zitat:
Und die VCL ist nunmal nur ANSI (bis D2007). Der einzige Weg dort einen anderen "Zeichensatz" anzuzeigen, geht über .Font.CharSet oder Man zeichent die Controls selber (OwnerDraw und Co.). Dort kann man aus dem im AnsiString codierten Text, wie es beliebt, in Unicode umwandeln und dieses über unicodefähige DrawText-Funktionen selber ausgeben. Oder man tauscht eben die Komponenten aus. |
Re: Türkische Zeichen
Zitat:
Delphi-Quellcode:
myComponent.Font.CharSet := TURKISH_CHARSET;
|
Re: Türkische Zeichen
Zitat:
|
Re: Türkische Zeichen
Zitat:
Zitat:
|
Re: Türkische Zeichen
Zitat:
Zitat:
Delphi-Quellcode:
var
temp: widestring; begin temp := UTF8ENCODE('Türkische Zeichen'); Label1.Caption := temp; end
Delphi-Quellcode:
var
temp: string; begin temp := UTF8ENCODE('Türkische Zeichen'); Label1.Caption := temp; end
Delphi-Quellcode:
var
temp: widestring; temp2: string; begin temp := 'Türkische Zeichen'; temp2 := UTF8ENCODE(temp); Label1.Caption := temp2; end
Delphi-Quellcode:
Kommt nur "Müll" raus.
begin
Label1.Caption := UTF8ENCODE('Türkische Zeichen'); end |
Re: Türkische Zeichen
Zitat:
Zitat:
Was passiert hier:
Delphi-Quellcode:
Und welche Codepage hat dein Windows? Die Zuweisung String := WideString könnte eine zerstörende Codepagewandlung verursachen.
var
temp: widestring; temp2: string; begin temp := 'Türkische Zeichen'; temp2 := UTF8ENCODE(temp); Label1.Caption := temp + ' -> ' + temp2; |
Re: Türkische Zeichen
Ein normales Label kann auch keinen UTF8-(Unicode) anzeigen
|
Re: Türkische Zeichen
Zitat:
Zitat:
D.h. aber Türkisch muss sich auch ohne Unicode darstellen lassen. |
Re: Türkische Zeichen
jupp, UTF-8 kann die VCL nicht anzeigen ... alles was sie bekommt, wird als ANSI angesehn (egal was drinnen ist) und dieses wird dann von Windows über den gewählten CharSet interpretiert.
Und Unicode/WideString wird nach ANSI umgewandelt, wofür die aktuelle Standard-Codepage verwendet wird, welche in einem deutschen Windows natürlich deutsch spricht. theoretischer Code: wie gesagt, du mußt das schon selber in den gewünschen Zeichensatz umwandeln und jetzt muß man nun noch die passende CodePage zum entsprechenden CharSet rausfinden.
Delphi-Quellcode:
var U: WideString;
S: AnsiString; C: LongWord; i: Integer; begin // dieses besser gleich im OI einstellen Label1.Font.CharSet := TURKISH_CHARSET; U := 'türkische Zeichen'; C := 28599 {ISO 8859-9 Turkish}; //C := 1254 {ANSI Turkish; Turkish (Windows)}; i := WideCharToMultiByte(C, 0, PWideChar(U), -1, nil, 0, '?', nil); SetLength(S, i - 1); WideCharToMultiByte(C, 0, PWideChar(U), -1, PAnsiChar(S), i, '?', nil); //Label1.Font.CharSet := TURKISH_CHARSET; Label1.Caption := S; Du willst praktisch das machen, was ich dort mit dem Chinesischen versucht hab: (ein paar Posts weiter ist auch der QuellCode) ![]() und nun mußt du noch deinen Text in die passende Codepage/Charset umwandeln. |
Re: Türkische Zeichen
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:24 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