- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
function TForm1.Pars(T_, ForS, _T: string): string;
var a, b:integer;
begin
Result := '';
if (T_='') or (ForS='') or (_T='') then Exit;
a:=Pos(T_, ForS);
if a=0 then Exit else a:=a+Length(T_);
ForS:=Copy(ForS, a, Length(ForS)-a+1);
b:=Pos(_T, ForS);
if b>0 then
Result:=Copy(ForS, 1, b - 1);
end;
Давно хотел выложить эту дуру на форум.
В чем лажа? Я подозреваю, что перегруженный оператор '=' применительно к строкам (сравнение двух строк) это вызов lstrcmp.
следовательно, POS ЧУВСТВИТЕЛЬНА к регистру!! Это значит, что функция вернет фалс, сравнивая ВоТ эТО и вот это.
Но это полбеды. Иные горемыки передают ей километровый текст в качестве шаблона - это нормально.
И потом еще кто то наивно удивляется, почему функция пропускает нужное или хватает лишнее.