Hola octalh, yo utilizaria un StringList y sus propiedades Delimiter y DelimitedText, donde el separador entre palabras no sería el + y - sino talvez un vacio, pero el mismo separador para toda la cadena, le pasas la cadena a delimitedText el cual te lo separa en el StringList, despues solo sería recorrer tu StringList.
Código Delphi
[-]
slLinea : TStringList;
begin
slLinea := TStringList.Create;
slLinea.Delimiter:=#32; slLinea.DelimitedText := 'hola como estas';
la otra forma utilizando pos y copy
Código Delphi
[-]
var
Cadena, CadenaTmp, Palabra : String;
PosIni, PosFin : Integer;
begin
Cadena := '+hola-xxxxx+como-xxxxx+estas-';
CadenaTmp := Cadena;
while Pos('-',CadenaTmp)>0 do
begin
PosIni := Pos('+',CadenaTmp);
PosFin := Pos('-',CadenaTmp);
Palabra := Copy( CadenaTmp, PosIni+1, PosFin-PosIni-1);
CadenaTmp[PosIni] := ' ';
CadenaTmp[PosFin] := ' ';
showmessage(Palabra);
end;
Saluditos