Delphi-PRAXiS
Seite 2 von 3     12 3      

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/)
-   -   Delphi Türkische Zeichen (https://www.delphipraxis.net/142495-tuerkische-zeichen.html)

himitsu 29. Okt 2009 11:03

Re: Türkische Zeichen
 
Zitat:

Zitat von Bruzzler
Das mit UTF8ENcode funktioniert nicht, schon ausprobiert. Aber es muss doch auch ohne Fremdkomponenten gehen. Naja evtl. muss ich anders ansetzen.....

UTF8Encode bringt nur was, wenn die andere Seite auch das Unicode versteht, welches da rauskommt.
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.

Tyrael Y. 29. Okt 2009 11:17

Re: Türkische Zeichen
 
Zitat:

Zitat von himitsu
Wenn du einen passenden CharSet findest (siehe ersten verlinken Thread), dann kannst du es auch darüber versuchen.

Delphi-Quellcode:
  myComponent.Font.CharSet := TURKISH_CHARSET;

himitsu 29. Okt 2009 11:39

Re: Türkische Zeichen
 
Zitat:

Zitat von Tyrael Y.
Delphi-Quellcode:
  myComponent.Font.CharSet := TURKISH_CHARSET;

OK, die Delphi 7 IDE kannte es noch nicht (könnte man sich aber selbstdefinieren)

Bernhard Geyer 29. Okt 2009 12:24

Re: Türkische Zeichen
 
Zitat:

Zitat von Bruzzler
Naja nachrüsten, ist eben nicht so einfach und es geht nicht um eine WEB Anwendung......

Also eine Anwendung im IIS? Oder nur eine Anwendung die Webseiten darstellen kann?

Zitat:

Zitat von Bruzzler
Das mit UTF8ENcode funktioniert nicht, schon ausprobiert.

UTF8Encode/Decode funktioniert schon seit D6. Was machst du genau?

Bruzzler 29. Okt 2009 12:53

Re: Türkische Zeichen
 
Zitat:

Zitat von Bernhard Geyer
Zitat:

Zitat von Bruzzler
Naja nachrüsten, ist eben nicht so einfach und es geht nicht um eine WEB Anwendung......

Also eine Anwendung im IIS? Oder nur eine Anwendung die Webseiten darstellen kann?

KEINE WEB ANWENDUNG!!!!!!

Zitat:

Zitat von Bruzzler
Das mit UTF8ENcode funktioniert nicht, schon ausprobiert.
Zitat:

Zitat von Bernhard Geyer
UTF8Encode/Decode funktioniert schon seit D6. Was machst du genau?


Ich habe mehrere Sachen getestet:

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:
begin
 Label1.Caption := UTF8ENCODE('Türkische Zeichen');
end
Kommt nur "Müll" raus.

Bernhard Geyer 29. Okt 2009 13:00

Re: Türkische Zeichen
 
Zitat:

Zitat von Bruzzler
KEINE WEB ANWENDUNG!!!!!!

Blöder Zeilenumbruch :wall:

Zitat:

Zitat von Bruzzler
temp := UTF8ENCODE('Türkische Zeichen');

Die Pas-Dateien werden alls Unicode/UTF8-Technisch gespeichert. Ich würde mal fast darauf tippen das u.U. hier schon der Compiler mist baut.
Was passiert hier:

Delphi-Quellcode:
var
temp: widestring;
temp2: string;
begin

temp := 'Türkische Zeichen';
temp2 := UTF8ENCODE(temp);
Label1.Caption := temp + ' -> ' + temp2;
Und welche Codepage hat dein Windows? Die Zuweisung String := WideString könnte eine zerstörende Codepagewandlung verursachen.

mkinzler 29. Okt 2009 13:00

Re: Türkische Zeichen
 
Ein normales Label kann auch keinen UTF8-(Unicode) anzeigen

Bruzzler 29. Okt 2009 13:09

Re: Türkische Zeichen
 
Zitat:

Zitat von mkinzler
Ein normales Label kann auch keinen UTF8-(Unicode) anzeigen

Sicher? Das erklärt einiges....*g*

Zitat:

Zitat von Bernhard Geyer

Zitat:

Zitat von Bruzzler
temp := UTF8ENCODE('Türkische Zeichen');

Die Pas-Dateien werden alls Unicode/UTF8-Technisch gespeichert. Ich würde mal fast darauf tippen das u.U. hier schon der Compiler mist baut.
Was passiert hier:

Delphi-Quellcode:
var
temp: widestring;
temp2: string;
begin

temp := 'Türkische Zeichen';
temp2 := UTF8ENCODE(temp);
Label1.Caption := temp + ' -> ' + temp2;

MH....kommt der gleiche Müll raus, aber laut mkinzler gehts ja eh nicht.

D.h. aber Türkisch muss sich auch ohne Unicode darstellen lassen.

himitsu 29. Okt 2009 13:17

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)
http://www.delphipraxis.net/internal...090323#1090323
und nun mußt du noch deinen Text in die passende Codepage/Charset umwandeln.

Bernhard Geyer 29. Okt 2009 13:18

Re: Türkische Zeichen
 
Zitat:

Zitat von Bruzzler
MH....kommt der gleiche Müll raus, aber laut mkinzler gehts ja eh nicht.

Ganz vergessen. Nach 7 Jahren ElPack weiß ich fast gar nicht mehr das Delphi 6 kein Unicode kann :mrgreen:

Zitat:

Zitat von Bruzzler
D.h. aber Türkisch muss sich auch ohne Unicode darstellen lassen.

Auf einem Türkischen rechner kein Problem - aber mit Codepages/Charsets keine Chance. Das ist eine Krückenlösung die nur teilweise funktioniert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 Uhr.
Seite 2 von 3     12 3      

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