Код:
procedure FmtStrToList(S : String; L : TStringList);
var
I : Integer;
Buf : String;
begin
Buf := '';
For I := 1 To Length(S) Do
If Not (S[i] In ['-','+'])
Then Buf := Buf + S[i]
Else
Begin
L.Add(Buf);
Buf := '';
End;
L.Add(Buf);
end;
Разбивает твою строку на лексемы. Если лексемы идут в строгом порядке, то просто формируешь из них массив/звпись/что-то-там-еще.
Если нет и + и - значащие, то на основе этого кода пишешт свой.