{$LONGSTRINGS ON} unit uStringParser; interface {Функция извлекает из строки s параметров вида "ИМЯ=ЗНАЧЕНИЕ" значение параметра с именем n. Значением считается участок строки от "ИМЯ=" следующего "ИМЯ=".} function ParseStr(const n,s:string):string; { Функция заменяет в строке параметров s вида ИМЯ=ЗНАЧЕНИЕ значение параметра с именем n на new. Значением считается участок строки от ИМЯ= до разделителя - первого символа имени. Если параметр отсутствует в строке, он добавляется туда. ЕСЛИ ПАРАМЕТР = "", то он удаляется из строки совсем.} function ReplaceStr(const n,s,new:string):string; implementation uses xStrScan; function ParseStr; var b:integer; begin b:=Pos(n,s); if b>0 then begin b:=b+Length(n); Result:=Copy(s, b, (Pos(n[1],Copy(s,b,High(b))+n[1])-1)); end; end; function ReplaceStr; var b,e,ln:integer; begin If Pos(n+new+n[1], s+n[1])>0 Then begin Result:=s; end Else begin b:=Pos(n, s); If b>0 Then begin ln:=Length(n); e:=b+ln; Inc(e,Pos(n[1], Copy(s,e,High(b))+n[1])-1); If new='' Then begin Result:=Copy(s,1,b-1) + Copy(s,e,High(e)) end else begin Result:=Copy(s, 1, b+ln-1) + new + Copy(s,e,High(e)); end; end else if new <> '' then begin Result:=s+n+new; end else begin Result:=s; end; end; end; end.