Вверх ↑
Разработчик
Ответов: 26170
Рейтинг: 2127
#1: 2008-12-28 23:19:51 ЛС | профиль | цитата
Dilma, или я чего-то не догоняю, или почему не сделать вот так:


function ReplaceSChar(const str:string):string;
var i,j,k,w:integer;
t,s:string;
begin
t := ''; i := 1; s := str;

while StrReplace( S, '\n\r', #13#10) do;
while StrReplace( S, '\r\n', #13#10) do;
while i<=Length(s) do begin
if (s[i] = '\')and(i < Length(s)) then begin
inc(i);
if s[i] = '\' then t := t + '\'
else if s[i] = 'n' then t := t + #13
else if s[i] = 'r' then t := t + #10
else if s[i] = 't' then t := t + #9
else if s[i] in ['0'..'9'] then begin
w := 0;
for j := 1 to 3 do begin //ограничение на текстовую длину числа
k := w*10 + ord(s[i]) - ord('0');
if k > 255 then break; //ограничение на величину числа
w := k; inc(i);
if i > Length(s) then break; //правая граница входной строки
if not(s[i] in ['0'..'9']) then break; //значит число кончилось
end;
dec(i); t := t + char(w);
end else t := t + '\' + s[i];
end else t := t + s[i];
inc(i);
end;
Result := StringToCode(t);
end;
В данном случе, одиночные тэги не трогаются. По-хорошему, я бы вообще все перевел на StrReplace
карма: 22

0