Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Text Sprachumschaltbar ausgeben (https://www.delphipraxis.net/178532-text-sprachumschaltbar-ausgeben.html)

Janine1111 13. Jan 2014 13:00

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?

p80286 13. Jan 2014 13:43

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

Janine1111 13. Jan 2014 13:59

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...

Der schöne Günther 13. Jan 2014 14:02

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.

himitsu 13. Jan 2014 15:42

AW: Text Sprachumschaltbar ausgeben
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1243431)
aber mehr Details wie verwendete Delphi-Version wären bestimmt hilfreich gewesen.

Klingt nach einem Ansi-Delphi, also vor Delphi 20009.
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.

ASM 13. Jan 2014 16:48

AW: Text Sprachumschaltbar ausgeben
 
Zitat:

Zitat von Janine1111 (Beitrag 1243415)
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?

Ab Delphi 2009ff und ohne die Ausgabesprache des ganzen PC auf russisches Layout umstellen zu müssen:
Delphi-Quellcode:
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;
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:28 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