Zitat von
GuenterS:
Ich stell mir das so vor:
Du gehst Dein Memo zeichen für Zeichen durch und schreibst das konvertierte in die neue Stringlist, dann ist es ziemlich egal, welche Reihenfolge du verwendest.
Hmmmmm - an die Möglichkeit habe ich noch gar nicht gedacht.
Delphi-Quellcode:
function GetISO8859_1(s: string): string;
var
i: Integer;
sNew: string;
begin
sNew := '';
for i := 1 to Length(s) do
begin
case s[i] of
';': sNew := sNew + '& # 5 9 ;';
'#': sNew := sNew + '& # 3 5 ;';
'&': sNew := sNew + '& # 3 8 ;';
'ä': sNew := sNew + '& # 2 2 8 ;';
// Hier folgen weitere ISO-Codes...
else
sNew := sNew + s[i];
end;
end;
Result := sNew;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
Memo1.Clear;
Memo1.Lines.Add('Mustermann GmbH & Co. KG');
Memo1.Lines.Add('');
Memo1.Lines.Add('Täler, Wälder; all das # ist Natur & schön.');
Memo2.Clear;
for i := 0 to (Memo1.Lines.Count - 1) do
begin
Memo2.Lines.Add(GetISO8859_1(Memo1.Lines[i]));
end;
end;
Ergibt:
Mustermann GmbH & # 3 8 ; Co. KG
T& # 2 2 8 ;ler, W& # 2 2 8 ;lder& # 5 9 ; all das & # 3 5 ; ist Natur & # 3 8 ; schön.
Danke euch allen...
Werde die komplette Function dann hier noch posten, wenn ich alles abgeschrieben habe.
Entdeckt noch jemand einen (logischen) Fehler oben im Code? Kann man an irgend einer Stelle Code einsparen oder verbessern?