Кто мешает загнать ранее предложенное решение в цикл и использовать разные разделители?
Код:
procedure TForm28.Button1Click(Sender: TObject);
var
sl: TStrings;
i, N: integer;
b: extended;
j: Integer;
const
CharList: String[2] = '[],';
begin
Memo1.Clear;
N:= 500;
sl:= TStringList.Create;
sl.Text := '[52, c.34-78; 137, c.56-98]';
for j := 1 to Length(CharList)
do begin
sl.Delimiter := Char(CharList[j]);
sl.DelimitedText:= sl.Text;
end;
for i := 0 to sl.Count-1
do if TryStrToFloat(sl[i], b)
then if b < N
then Memo1.Lines.Add(FloatToStr(b-1))
else Memo1.Lines.Add(FloatToStr(b))
else Memo1.Lines.Add(sl[i]);
sl.Free;
end;