Einzelnen Beitrag anzeigen

ASM

Registriert seit: 15. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Text Sprachumschaltbar ausgeben

  Alt 13. Jan 2014, 16:48
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.
  Mit Zitat antworten Zitat