Показать сообщение отдельно
  #11  
Старый 11.02.2013, 03:11
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

А вот такое будет правильно работать?
Код:
function DelUseless(Data, BegTeg, EndTeg: string): string;
var
i: integer;
f1, f2, f3, f4: boolean;
begin
 if Length(Data) = 0 then Exit;
 Result:= '';  f1:= false; f2:= false; f3:= false; f4:= false;

 for i := 1 to Length(Data) do
  begin
   if  (Data[i] = BegTeg[1]) and (not f1)
   and (copy(Data, i, Length(BegTeg) - 1) =
        copy(BegTeg, 1, Length(BegTeg) - 1)) then f1:= true;

   if (Data[i] = BegTeg[Length(BegTeg)]) and (f1) then f2:= true;

   if  (Data[i] = EndTeg[1]) and (f1) and (f2) and (not f3)
   and (copy(Data, i, Length(EndTeg) - 1) =
        copy(EndTeg, 1, Length(EndTeg) - 1))then f3:= true;

   if (Data[i] = EndTeg[Length(EndTeg)]) and (f1) and (f2) and (f3) then
   begin
    f1:= false; f2:= false; f3:= false; f4:= true;
   end;
 if (not f1)and(not f2)and(not f3)and(not f4) then Result:= Result + Data[i];
  if f4 then f4:= false;
  end;

end;
Здесь только нет обработки ошибки (по выходу копой за размерчик входной строки). Использование:
Код:
Edit1.Text:=
DelUseless('1<script 3007876>2</script 89008097>3 4<script defwwww>5</script hhhthtrew>6','<script>','</script>');

Символы "<" и ">" - заменяемо-основные, вдруг какие другие попадутся.

З.Ы. Циклом всё же медленнее, с while можно сразу пропустить лишние интерации, а с for такое не прокатит.
Ответить с цитированием