AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Unicode umwandeln Delphi 6

Ein Thema von v2afrank · begonnen am 13. Jan 2011 · letzter Beitrag vom 13. Jan 2011
Antwort Antwort
v2afrank

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

Unicode umwandeln Delphi 6

  Alt 13. Jan 2011, 11: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
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Unicode umwandeln Delphi 6

  Alt 13. Jan 2011, 11:49
Mir ist klar, dass ich hier auf einem deutschen Windows keine kyrillischen Buchstaben anzeigen kann,
Dann hast duein komisches Windows. Unsere Delphi6 Programme können auf deutschen Windows (sogar unter Win98) kyrilisch, chinesisch, Arabisch anzeigen - Alles gleichzeigt

Aber spaß beiseite:

In der Unit JclUnicode der Jedi gibt es die Funktion

function WideStringToStringEx(const WS: WideString; CodePage: Word): string; Dürfte genau sein was du benötigtst. 1251 ist die Codepage für Kyrilisch.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
v2afrank

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

AW: Unicode umwandeln Delphi 6

  Alt 13. Jan 2011, 12:06
Super funktioniert.
Danke
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:20 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