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
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).