![]() |
Türkische Zeichen
Hallo ich habe eine Frage, ist es mit Delphi 2007 möglich Türkische Zeichen darzustellen?
Die Türkischen Zeichen kommen wohl im ISO-8859-3 Charset vor. Für Antworten wäre ich dankbar. |
Re: Türkische Zeichen
Zitat:
z.B. zu finden über ![]() ![]() ![]() usw. |
Re: Türkische Zeichen
mh.....also in dem Thema ist aber leider nichts was mir hilft, da Delphi2007 ja nicht UNICODE fähig ist, kann ich schlecht mit UNICODE arbeiten. Ganz davon abgesehen geht es bei mir nicht um eine WEB Anwendung. Noch eine Anregung?
Die Suche habe ich schon bemüht...... |
Re: Türkische Zeichen
Unicode kann Delphi schon lange und die fehlenden unicodefähigen Komponenten kann man nachrüsten. :)
Aber wenn es nur um die HTML-Ausgabe geht und nicht um die GUI, dann könntest du entweder WideCharToMultiByte nutzen und Unicodestrings (WideString) in ein passendes Format übersetzen oder du verwendest einfach UTF-8 (dafür hat Delphi einige einfache Funktionen direkt an Board) oder Man ignoriert einfach alles [cl](dafür darf es aber nirgendwo eine Brücker über Unicode geben, womöglich dann die Codierung zerstört wird)[/cl] und sagt ganz einfach "so, dieser AnsiString ist jetzt ISO-8859-3" und fertig. Dann nur nur noch als "ANSI" ausliefern, aber im Header sagen es wäre ISO-8859-3. Hierfür muß man aber auch die ganzen Zeichen schon kodiert ablegen oder ebenfalls via WideCharToMultiByte in SingleByte (AnsiString) umwandeln. |
Re: Türkische Zeichen
Naja nachrüsten, ist eben nicht so einfach und es geht nicht um eine WEB Anwendung......
|
Re: Türkische Zeichen
Warum soll nachrüsten nicht moeglich sein? z.B. mit den TNTUnicode/Komponenten
|
Re: Türkische Zeichen
Ups, das nicht überlesen :oops:
Nachrüsten: TMS (hat TNT aufgekauf und ist nun kostenpflichtig, aber dafür aktueller) und die "alten" kostenlosen TNT-Unicode-Controls Die TNTs sind einfach nur Unicode-Protierungen der delphieigenen VCL. Also bis auf einige Typumstellungen und ein paar kleine Erweiterungen sind sie von Außen gesehn genauso aufgebaut wie die Originale. Du bräuchtest diese also nur zu installieren und dann via Refactoring (per Hand) die Typen in deiner Anwendung ersetzen aus TEdit wird TTntEdit usw. (brauch man einfach nur in der .PAS und .DFM ersetzen) und danach hast du Unicode. oder einfach nur so ![]() |
Re: Türkische Zeichen
Naja weil das Projekt schon eine beachtliche Größe hat und nicht einfach wild Komponenten reinwandern sollten. Da aber Türkisch nicht unbedingt UNICODE benötigt muss es doch auch irgendwie anders möglich sein.
|
Re: Türkische Zeichen
Zitat:
(im Notfall die AnsiString-Zuweisungen mit UTF8Decode/UTF8Encode versehen, wenn man die Anwendung nicht auf UnicodeStrings umwandeln kann) Zitat:
Mußt diesen CharSet dann nur bei allen "nötigen" Komponenten setzen. Wenn das Programm in einem tyrkischen Windows läuft, dann ist da der Standard-CharSet (DEFAULT_CHARSET) vermutlich schon auf türkisch und man muß nichts umstellen, sondern nutzt es einfach. |
Re: Türkische Zeichen
Das mit UTF8ENcode funktioniert nicht, schon ausprobiert. Aber es muss doch auch ohne Fremdkomponenten gehen. Naja evtl. muss ich anders ansetzen.....
|
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:
|
Re: Türkische Zeichen
Hallo Bruzzler,
was ist eigentlich Dein Problem? Wenn du eine Datei mit einem türkischen (ansi) Text hast, dann brauchst Du nur einen Font, der die notwendigen Zeichen an der richtigen Stelle hat. Und die richtige Stelle wird über die verwendete Codepage definiert. Mit SansSerive könntest du da ein Problem bekommen, weil es da weder die beiden i (mit und ohne i-Punkt) noch das "s mit komma" gibt, mit Arial hast Du eine Chance, das es klappt (TURKISH_CHARSET [162]). In welcher Kodierung (UTF8 / Unicode....) der Text gespeichert wurde, ist in sofern irrelevant, als der notwendige Font für die Anzeige zur Verfügung stehen muß, sonst gibt's halt nur Müll. Gruß K-H |
Re: Türkische Zeichen
Zitat:
Sorry, aber wenn du aufmerksam lesen würdest, wüsstest du, dass es nicht um Dateien geht, sondern mein Programm soll eben Türkisch anzeigen. Also es soll nicht "Klicken" auf dem Button stehen, sondern das Türkische pendant dazu. |
Re: Türkische Zeichen
das hier ist übrigens "klicken" auf Türkisch, im der CodePage 1254 [ ANSI Turkish; Turkish (Windows) ] kodiert und als deutsches ANSI angezeigt
Delphi-Quellcode:
so wird es dann im türkischen Zeichensatz dargestellt
Label1.Font.CharSet := TURKISH_CHARSET;
Label1.Caption := 'Týklayýn'; (natürlich vorausgesetzt ein passender Zeichensatz ist installiert) angezeigter Text von Label1 Tıklayın umgewandelt wurde es von Unicode über die Funktion da oben |
Re: Türkische Zeichen
Zitat:
Naja das ist immerhin eine vorzeitige Lösung.....bis ich was besseres/pefekteres gefunden habe. Danke mal vorab an alle..... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:56 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