Функция конвертации текста HTML содержащего строки вида # 123; в читабельбный вид
Falk0ner, вс, 06/07/2008 - 15:35.
Функция конвертации текста HTML содержащего строки вида # 123; в читабельбный вид
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;
Автор RAdmin
Взято с Vingrad.ru http://forum.vingrad.rufunction 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;
Отправить комментарий