// Hiermit kann man
Silben von
(deutschen)
Texten zählen lassen. Dabei wird
// beispielsweise bei "Eiapopeia" die Zahl 5 zurückgegeben
(Ei-a-po-pei-a),
// bei "Präambel" die Zahl 3 und bei Wörtern wie "Mamaaaaaaaaaaaaa" die Zahl 2.
// Allerdings sei nicht verschwiegen, dass es bei Wortkonstruktionen wie
z.B.
// "beinhalten"
(sprich
be-inhalten)
zu Zählfehlern
kommt, denn der Einfachheit
// halber sieht das Programm solche Dinge wie "ei",
"au", "ai", "eu", "äu",
"ie",
// "oi", "ae", "oe" oder "ue"
jeweils als eine einzige Silbe an
und erforscht nicht,
// ob es sich phonetisch um zwei Silben handeln könnte.
// Getestet mit D4 unter WinME
function silbenzahl(s: string): longword;
const
i = ['i', 'e', 'u'];
a = ['a', 'o', 'ä', 'ö', 'ü'] + i;
var
x: integer;
isina: boolean;
mehrvokale: byte;
c: char;
procedure grundstellung;
begin
c := #0;
isina := false;
mehrvokale := 0;
end;
begin
result := 0;
grundstellung;
s := ansilowercase(s);
for x := 1 to length(s) do begin
if (s[x] in a) then begin
if ((not isina) or (mehrvokale <> 1) or (not (s[x] in i)))
and (s[x] <> c) then inc(result);
if (mehrvokale > 0) and (c <> s[x]) then mehrvokale := 0
else inc(mehrvokale);
isina := true;
c := s[x];
end else grundstellung;
end;
end;
//
Beispielaufruf
procedure
TForm1.Button3Click(Sender:
TObject);
begin
showmessage(inttostr(silbenzahl('Eiei
Herr Mayer, da sag ich doch "aua" oder "pfui".')));
end;
|