Показать сообщение отдельно
  #11  
Старый 18.02.2013, 08:03
Pcrepair
 
Сообщения: n/a
По умолчанию

то есть использовать CASE для определения нужный тег, или не нужный?

и использовать Repeat для одного гарантированного прохода по строке
а копировать чем? COPY или MOVE. или через указатели? типа:
Код:
function TegsDelete2(const Source: string):string;
var
  Step, TagCnt : Integer;
  ResChar, SrcChar: PChar;
begin                      
  TagCnt:=0;
  SetLength(Result, Length(Source));  (*создаем выход с длинной =*)
  if Length(Source)=0 then   Exit;

  SrcChar:=@Source[1]; (*копировать первый символ указатель на память*)
  ResChar:=@Result[1];
  for Step:=1 to Length(Source) (*цикл*)
   do   begin
         case SrcChar^ of
           '<': Inc(TagCnt);
           '>': Dec(TagCnt);
           else   if TagCnt<=0 then
                       begin  (*вот тут копирование нужных символов*)
                         ResChar^:=SrcChar^;
                         Inc(ResChar);
                         TagCnt:=0
                       end
          end;
         Inc(SrcChar)
        end;
  SetLength(Result, ResChar-PChar(@Result[1]));  (*обрезаем лишнее в строке*)
end;
но тут еще вопрос: эта функция будет работать в потоке(THread), одномоментно будут работать до 10 нитей. не будет ли проблем
Ответить с цитированием