Bist´n Schatz! So einfach gehts, wenn man weiss, wo man suchen muss!!! Danke!
Habs jetzt mal auf die Schnelle zusammengebastelt und in den ersten Tests siehts gut aus (und falls es noch jemand mal brauchen könnt?!):
Code: Alles auswählen
procedure HtmlToStr(var Str:TStringList);
var
x,y,z:integer;
s:string;
wc:widechar;
begin
for x:=0 to Str.Count-1 do
if pos('&',Str.Strings[x])>0 then begin
s:=Str.Strings[x];
y:=pos('&',s);
z:=posex(';',s,y);
while (y>0) do begin
if (z>y) then
if ResolveHTMLEntityReference(copy(s,y+1,z-y-1),wc) then
s:=Stringreplace(s,copy(s,y,z-y+1),UTF8Encode(WideCharLenToString(@wc,1)),[rfReplaceAll]);
inc(y);
y:=posex('&',s,y);
z:=posex(';',s,y);
end;
Str.Strings[x]:=s;
end;
end;
Getestet unter Lazarus 1.0.10 FPC 2.6.2
Code: Alles auswählen
procedure HtmlToStr(var Str:TStringList);
var
x,y,z:integer;
s:string;
wc:widechar;
begin
for x:=0 to Str.Count-1 do
if pos('&',Str.Strings[x])>0 then begin
s:=UTF8toAnsi(Str.Strings[x]);
y:=pos('&',s);
z:=posex(';',s,y);
while (y>0) do begin
if (z>y) then
if ResolveHTMLEntityReference(widestring(copy(s,y+1,z-y-1)),wc) then
s:=Stringreplace(s,copy(s,y,z-y+1),UTF8Encode(wc),[rfReplaceAll]);
inc(y);
y:=posex('&',s,y);
z:=posex(';',s,y);
end;
Str.Strings[x]:=UTF8Encode(s);
end;
end;
Getestet unter Lazarus 1.1 FPC 2.7.1