Не причесано, на коленке, но, работает, оптимизацию, обработку ошибок и другие разделители оставлю вам на закуску:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
fL : TStringList;
i : integer;
maxlenstr, s, s2 :string;
lastchar:char;
begin
maxlenstr:='';
s:='';
s2:='';
fL := TStringList.Create;
try
fL.Delimiter := ' ';
fL.StrictDelimiter := True;
fL.DelimitedText := edit1.text;
for i := 0 to fl.Count - 1 do
if Length(fL[i])>Length(maxlenstr) then
maxlenstr:=fL[i];
//
lastchar:= maxlenstr[length(maxlenstr)];
//
showmessage('max len word: '+maxlenstr+#13#10+'word len = '+ inttostr(length(maxlenstr))+#13#10+
'word last char = '+lastchar);
//
for i := 0 to fl.Count - 1 do
begin
s:=fL[i];
if Trim(S)<>'' then
begin
if s[length(s)] = lastchar then
s2:=s2+ ' ' + s;
end;
end;
//
memo1.Lines.add(s2);
finally
fL.Free
end;
end;