Einzelnen Beitrag anzeigen

v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
573 Beiträge
 
Delphi XE2 Professional
 
#1

Unicode umwandeln Delphi 6

  Alt 13. Jan 2011, 10:34
Ich brauche ein bischen Nachhilfe in Unicode. Und zwar ist folgendes gegeben.
Ich habe ein Delphi 6 Programm, welches aus einer Exceltabelle die anzuzeigenden Texte extrahiert. Das passiert in einer Dll, die per ADO auf die Zellen in dem Excelblatt zugreift.
Nun ist auch russisch als Sprache hinzugekommen. Ich habe ein wenig rumgespielt und bin zu folgender Lösung gekommen.

Delphi-Quellcode:
function DecodeString(const str: String; Offset: Integer): Shortstring;
var
  n: Integer;
begin
  result := '';

  for n := 1 to length(str) do
  begin
    if ord(str[n]) > $FF then
      result := (result + chr((ord(str[n]) and $FF) + Offset))
    else
      result := (result + chr((ord(str[n]))));
  end;
end;
Ich rufe die Funktion dann direkt mit dem augelesenen String aus und einem Offset von $B0 für russisch. Jetzt habe ich folgende Fälle festgestellt:
Mit Delphi 6 kompiliert läuft die Funktion auf einem russischen Rechner richtig. Es werden die richtigen kyrillischen Buchstaben angezeigt
Mit Delphi 6 kompiliert läuft die Funktion auf einem deutschen Rechner nicht. Ich erhalte nur ???
Mit Delphi 2010 kompiliert läuft die Funktion auf einem russischen Rechner nicht. Es erscheinen zufällige Zeichen (keine kyrillischen)
Mit Delphi 2010 kompiliert läuft die Funktion auf einem deutschen Rechner richtig

Zu dem Betrieb auf dem deutschen Rechner muss ich noch kurz was sagen. Mir ist klar, dass ich hier auf einem deutschen Windows keine kyrillischen Buchstaben anzeigen kann, jedoch werden die Texte auch zu einer Hardware übertragen, die diesen Text dann auch auf einem russischen Display anzeigt. Dieses Display braucht dabei 1 Byte Strings.
Ich habe mal den korrekten Text angehängt
Öffnet man diese Textdatei auf einem russischen System wird der Text kyrillisch angezeigt und auch zu unserer Hardware gesendet wird der Text richtig angezeigt

Nach so vile Text jetzt meine Frage, warum funktioniert es je nach Compiler auf dem einem bzw. dem anderen System und wie kann ich das Programm abändern, dass es sowohl auf einem deutschen als auch auf einem russischen Rechner den Text wie in richtig.txt erzeugt ?
Angehängte Dateien
Dateityp: zip Mappe1.zip (3,7 KB, 11x aufgerufen)
Dateityp: txt richtig.txt (10 Bytes, 16x aufgerufen)
  Mit Zitat antworten Zitat