Einzelnen Beitrag anzeigen

Benutzerbild von Helmi
Helmi

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

Re: Bordmittel gesucht: Bestimmte Zeichen aus String entfern

  Alt 10. Sep 2007, 18:56
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.
mfg
Helmi

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