olesio napisał(a)
Można tak, jak TomRiddle radzi. Jednak najprościej jeżeli słowa będzie oddzielać ten sam separator i chodzi o wyodrębnienie piątek słowa z ciągu, to ja bym zrobil to w ten sposób co poniżej.
function Explode(Str : string; Separator : string) : TStringList;
var
X : integer;
begin
Result := TStringList.Create;
X := Pos(Separator, Str);
while X > 0 do
begin
Result.Add(Copy(Str, 1, X - 1));
if X <= Length(Str) then
begin
Str := Copy(Str, X + Length(Separator), Length(Str));
end;
X := Pos(Separator, Str);
end;
if (Length(Str) > 0) then
begin
Result.Add(Str);
end;
end;
Przykład użycia:
var
SL : TStringList;
begin
SL := Explode('jeden dwa trzy kot słowo pies pięć sześć siedem', ' ');
ShowMessage(SL[4]);
SL.Free;
end;
A jak tekst się bardziej różni to do takich celów jak wyodrębnienie tekstu z innego tekstu najlepiej skorzystać z wyrażeń regularnych. Polecam moduł z http://regexpstudio.com - są dołaczone przykłady oraz dokumentacja, a na google znajdziesz mnóstwo innych przykładów, jak i dodatkowych informacji.
Dzięki, ale niestety tak to nie może działać bo łańcuch przed kotem i za psem zawsze może być inny jak już mówiłem, raz może mieć 10 znaków a raz 1000 więc nie mogę sobie tak wyliczać i wybierać słowo po liczbie. Kot i pies muszą być separatorami.