Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #14  
Старый 19.02.2013, 23:10
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Зачем Insert? Можно просто дописать в конец. Что-то вроде
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Count := 1;
cPos := 1;
Pos1:=PosEx('<', Data,1);
Result := '';
while Pos1 > 0 do
begin
   DefineTeg:=Copy(Data, Pos1, 10); (*копируем первые 11 символов с позиции первого вхождения*)
   TegEnd:=PosEx(' ',DefineTeg,1); (*позиция первого пробела *)
   if TegEnd = 0 then (*если пробела нет ищем >*)
       TegEnd:=PosEx('>',DefineTeg,1); (*позиция первого >*)
   if TegEnd = 0 then
       break;
   Pattern:=Copy(DefineTeg, 1, (TegEnd-1)); (*выделяем паттерн тега*)
   // можно и так, а можно
   // SetLength(DefineTag, TegEnd - 1);
   // и юзать DefineTag
   if Pattern = '<script' then
   begin
      Result := Result + Copy(Data, Count, Pos1 - Count);
      Count := PosEx('</script>', Data, Pos1 + 7) + 9;
      cPos1 := Count;
   end
   else
      cPos1 := Pos1 + 1;
   Pos1:=PosEx('<', Data,cPos);
end;
Result := Result + Copy(Data, Count, Length(Result) - Count);
ЗЫЖ не тестил, писал "на коленке", могут быть и ошибки.
Хотя вообще странно, что твой вариант медленнее. В таком случае может быть медленнее и тут. По идеи PosEx = rep scasb, одна команда; в то время как прибавление по одному символу - постоянные релоки строки.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 19.02.2013 в 23:16.
Ответить с цитированием
 


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:45.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025