Функция конвертации текста HTML содержащего строки вида
Материал из DRKB
function PreDecode(s: string): string;
function AddNumericChar(I: Integer): string;
var
W: WideChar;
Buffer: array[0..10] of char;
begin
if I = 9 then
Result := ' '
else if I < ord(' ') then
Result := '?' { control char }
else if (I < 256) then
Result := Chr(I)
else
begin
W := WideChar(I);
SetString(Result, Buffer, WideCharToMultiByte(CP_ACP, 0,
@W, 1, @Buffer, SizeOf(Buffer), nil, nil))
end;
end;
var
val, i, ik: integer;
sq: string;
begin
for i := 1 to Length(s) do
begin
if ( (s[i]='&') and (s[i+1] ='#') ) then
begin
sq := Copy(s, i+2, Length(s));
for ik := 1 to Length(sq) do
begin
if not (sq[ik] in ['0'..'9']) then
break;
end;
if Copy(sq, 1, ik-1) <> '' then
val := StrToInt(Copy(sq, 1, ik-1))
else
val := -1;
if ((val <> -1) and (sq[ik] = ';')) then
begin
Result := Result + AddNumericChar(val);
Delete(s, i, ik+1);
end;
end
else
Result := Result + s[i];
end;
end;
Author: RAdmin
Source: Vingrad.ru http://forum.vingrad.ru
ID: 03543