Einzelnen Beitrag anzeigen

Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#1

Sonderzeichen umwandeln in ISO-8859-1 und Konsorten

  Alt 7. Jul 2005, 10:08
Hallo,

folgender Code ist gegeben:

Delphi-Quellcode:
function TForm1.Sonderzeichen(S: string): string;
var
  P: Integer;
begin
  repeat
    P := Pos('&', S);
    if P > 0 then
    begin
      Delete(S, P, 1);
      Insert('&', S, P);
    end;
  until P = 0;
  repeat
    P := Pos('<', S);
    if P > 0 then
    begin
      Delete(S, P, 1);
      Insert('<', S, P);
    end;
  until P = 0;
  repeat
    P := Pos('>', S);
    if P > 0 then
    begin
      Delete(S, P, 1);
      Insert('>', S, P);
    end;
  until P = 0;
  Result := S;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit2.Text := Sonderzeichen(Edit1.Text);
end;
Das Problem: Beim Zeichen "&" (kaufmännisches Und) verweist er andauernd auf sich selbst und erzeugt eine Endlosschleife, da ja das Zeichen im Code & selbst vorkommt.

Sätze wie:

<Dies ist ein Satz>

werden problemlos in

<Dies ist ein Satz>

umgewandelt.

Der Satz:

Mustermann GmbH & Co. KG

landet (logierschweise) in der Endlosschleife.

Ich habe das mit

Delphi-Quellcode:
repeat
...
until
deshalb eingeführt, weil es ja sein kann, daß in einer Zeile mehrere Zeichen vorkommen können.

Frage: Gibt es eine elegantere Lösung, um Sonderzeichen HTML-Konform (bzw. ISO-8859-1-Konform für bmeCAT-Kataloge) umzuwandeln. Meine Function oben ist nicht das gelbe vom Ei (ich weiß), hat aber bisher gute Dienste geleistet - bis eben die erste Firma mit "&" auftauchte.

Bietet vielleicht Delphi selbst sowas an? Gibt es fertige Routinen, die man sich anschauen kann?

Für jede Hilfe dankbar...

Hinweis: Der Editor wandelt meine Codes in lesbare Zeichen um. Eigentlich heißt es oben: & # 3 8 ; (ohne Leerzeichen) etc. (also das Gegenstück des jeweiligen Zeichens, wie hier).
Catbytes
  Mit Zitat antworten Zitat