type
zuw = (nurZahlen, nurWorte, ZahlenUndWorte);
function wortzahl(const s: string; was: zuw): Word;
const
bstn = ['a'..'z', 'ä', 'ö', 'ü', 'A'..'Z', 'Ä', 'Ö', 'Ü', 'ß', ''''];
zhln = ['0'..'9'];
zchn = [',', '.'];
var
i: integer;
flag: boolean;
chrs: set of char;
function zchntest: boolean;
begin
if (s[i] in zchn) and (was <> nurWorte) and (i > 1)
then result := (s[pred(i)] in zhln) and (s[succ(i)] in zhln)
else result := true;
end;
begin
flag := true;
result := 0;
case was of
nurZahlen: chrs := zhln + zchn;
nurWorte: chrs := bstn;
else chrs := bstn + zhln + zchn;
end;
for i := 1 to length(s) do begin
if (s[i] in chrs) and zchntest then begin
if flag then begin
inc(result);
flag := false;
end;
end else flag := true;
end;
end;
// Beispielaufruf
procedure TForm1.Button7Click(Sender: TObject);
begin
showmessage('Der Text enthält ' +
inttostr(wortzahl(Memo1.text, ZahlenUndWorte)) +
' Wort(e) bzw. Zahl(en).');
end;