Как извлечь слова из строки и хранить их где то в Lazarus(Pascal)?

У меня есть обработчик в котором я сравниваю длину слово полученную от пользователя и сравниваю с числом, который так же ввел пользователь в InputCountFromUser и если они совпадают я ввожу слово в OutputWordsFromStr.

Но как вводить строку и в ней каждые слова сравнивать с InputCountFromUser и выводить в OutputWordsFromStr слова, которые совпадали с числом введенное от пользователя т.е InputCountFromUser

ПРИМЕР: `` InputStrFromUser:= 'Привет Том! Как дела?' InputCountFromUser:= 3; и в Memo (OutputWordsFromStr) выводить слова Том и Как.

procedure TForm1.OutputBtnClick(Sender: TObject);
var
  InputStr: string;
  gg:integer;

begin
  InputStr:= InputStrFromUser.Text;
  OutputWordsFromStr.Clear;

  if ( IntToStr(length(InputStr)) = InputCountFromUser.Text) then
  begin
    OutputWordsFromStr.Text:= InputStr;
  end;

end;  

РЕШЕНИЕ:

procedure TForm1.OutputBtnClick(Sender: TObject);
var
  inputStr: string;
  words: TStringList;
  i:integer;
begin
  inputStr := InputStrFromUser.Text;
  OutputWords.Clear;
  words:= TStringList.Create;
  words.DelimitedText:= inputStr;
  ShowMessage(IntToStr(words.Count));
  for i := 0 to words.Count - 1 do
  begin
    if IntToStr(Length(words[i])) = InputCountFromUser.Text then
    begin
      OutputWords.Lines.Add(words[i]);
    end;
  end;
end; 

Только разделить слов - это пробел, т.е в строке Привет мир! 2 слова Привет и мир!.

Знак ! так же учитывается.


Ответы (1 шт):

Автор решения: MBo

Извлечь слова из строки можно в TStringList или в массив строк. В Delphi есть Split.

Если во FreePascal именно такой функции вдруг нет, покопайтесь в StrUtils - я вижу SplitString

→ Ссылка