![]() |
Text Sprachumschaltbar ausgeben
Hallo,
ich habe ein kleines Problem. Ich habe ein kleines ActiveX geschrieben, in dessen Oberfläche sich ein Button befindet. Der Text auf dem TButton soll sprachumschaltbar sein. Das heißt ich habe eine SQL Datenbank in der sich eine Tabelle befindet mit einer ID und den entsprechenden Übersetzungen. Abhängig von der ID zeige ich den Text an. Nur im russischen bekomme ich soetwas: 'Îáúåäèíåííàÿ ëåâàÿ áîêîâàÿ ïàíåëü'. Wie schaffe ich es, dass der Text korrekt angezeigt wird? |
AW: Text Sprachumschaltbar ausgeben
Das kommt darauf an.
Mein erster Rat wäre, einen Font mit kyrillischen Zeichen nutzen. Dann gäbe es die Frage wie der Text gespeichert ist 8Bit/Zeichen 16Bit/Zeichen... Gruß K-H |
AW: Text Sprachumschaltbar ausgeben
Ich habe es gelöst bekommen... in dem ActiveX bekomme ich zwar einen falschen String, aber wenn ich die Ausgabesprache des PC´s auf russisch einstelle, dann werden die kyrillischen Zeichen dargestellt...
|
AW: Text Sprachumschaltbar ausgeben
Ich kenne mich mit ActiveX jetzt kein Stück aus, aber mehr Details wie verwendete Delphi-Version wären bestimmt hilfreich gewesen. Auch: Wenn im Betrieb die Sprache umgestellt wird, bekommt deine Anwendung eine Message, damit du darauf reagieren kannst. Keine Ahnung ob dir das in Zukunft hilft.
|
AW: Text Sprachumschaltbar ausgeben
Zitat:
Danach kannst du Umschalten wie du willst, es ändert sich aber praktisch nichts. Und ja, es gibt einen Grund, warum man z.B. die Delphi-Version im Profil und manchmal auch in den neuen Themen angeben kann. |
AW: Text Sprachumschaltbar ausgeben
Zitat:
Delphi-Quellcode:
In älteren Delphiversionen (z.B. Delphi 7) geht die Wiedergabe der kyrillischen Unicodezeichen mit bordeigenen Mitteln nur extrem umständlich auf dem Umweg über eine eingebaute WebBrowser-Instanz und mit Hilfe einer CharConvertTable, welche auf einer programmintern konstruierten Minimalwebseite die ansicodierten Zeichen in die HTMLcodes der entsprechenden kyrillischen Zeichen konvertiert.
function AnsiToUTF16(const AText: AnsiString; Codepage: DWORD): String;
var BufSize: Integer; dwFlags: DWORD; begin result := ''; if Length(AText) = 0 then Exit; case CodePage of 932: dwFlags := MB_PRECOMPOSED; else dwFlags := 0; end; BufSize := MultiByteToWideChar(CodePage, dwFlags, PAnsiChar(AText), Length(AText), nil, 0); SetLength(result, BufSize); MultiByteToWideChar(CodePage, dwFlags, PANsiChar(AText), Length(AText), PWideChar(result), BufSize); end; // Beispiel procedure TMainForm.Button1Click(Sender: TObject); var zeile: AnsiString; begin zeile:='Îáúåäèíåííàÿ ëåâàÿ áîêîâàÿ ïàíåëü'; // hier mit Codepage für die kyrillische Schrift: Showmessage(format('Ansicode: %s'#13#10'Unicode: %s',[zeile,AnsiToUTF16(zeile, 1251)])); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 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