Einzelnen Beitrag anzeigen

Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

XE2: Probleme mit Umwandlung von Char zu Byte

  Alt 22. Jan 2012, 19:30
Hallo,

ich kämpf gerade mit dem Portieren eines in Delphi7-geschriebenen Projektes in Delphi XE2.
Darin beschreib ich ein LCD-Modul.

Blöderweise kann ich Texte nicht 1:1 an das Modul senden, da einige Sonderzeichen einen anderen Hexwert haben.

Dazu hab ich mir damals folgendes Konstrukt gebaut:

Delphi-Quellcode:
procedure TMainForm.LCD_Text_senden(Text: String; Zeilenumbruch: Boolean = false;
  leeren: Boolean = false; Schritt: Boolean = false; Verzoegerung: Word = 100);
const
  Chars: array[1..10] of Char = ('ä', 'ö', 'ü', 'Ä', 'Ö', 'Ü', 'ß', '²', '³', 'µ');
  Bytes: array[1..10] of Byte = ($84, $94, $81, $8E, $99, $9A, $E1, $FD, $FE, $E6);

var
  i : Integer;
  Pos_char : Integer;

begin
  {...}

  //Sonderzeichen auslesen
  for i := 1 to length(Text) do
    begin
      //prüfen ob Char im Array "Chars" ist
      Pos_Char := Pos((Text[i]), Chars);

      //Sonderzeichen vorhanden? - dann durch Byte-Wert ersetzen
      If Pos_Char > 0 then
        Text[i] := Chr(Bytes[Pos_Char]);
    end;

  {...}
end;
Unter Delphi7 hats bestens funktioniert. Unter XE2 leider nein, da die ersetzten Werte z. B. bei "ä" nicht mehr $84, sondern $0084 und damit hat das LCD-Modul Probleme.

Nun könnt ich aus Text: String einfach Text: AnsiString machen.

Aber wie müsst es denn mit String gemacht werden? (falls das überhaupt mit String geht)

Dummerweise bekomm ich dann bei anderen Codezeilen (z. b. wo Insert verwendet wird) dann Warnungen (z. B. [DCC Warnung] Unit1.pas(208): W1058 Implizite String-Umwandlung mit potenziellem Datenverlust von 'string' zu 'AnsiString').

Ich würd halt gerne das Ganze auf Text: String lassen.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<

Geändert von Helmi (22. Jan 2012 um 20:46 Uhr)
  Mit Zitat antworten Zitat