Hallo,
ich hatte mal ein ähnliches Problem.
Ich musste Chars durch Hex-Zahlen ersetzen.
Damals hätt ich für 10 Chars, 10x StringReplace aufrufen müssen.
Dies war mir aber zu aufwendig und zu langsam.
Ich hab mir dann folgende Logik überlegt und dies zu vereinfachen und zu verschnellern:
Delphi-Quellcode:
function TMainForm.LCD_Text_senden(Text: String);
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
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;
wie du siehst, geh ich jedes Zeichen des Textes durch, schau ob das Zeichen (also Char) in dem Array Chars vorhanden ist.
Falls ja, dann wird dieses Char durch ein Byte des Array Bytes ersetzt.
Du könntest dies etwas umbauen.