Ok, das ändert das Grundproblem der bisherigen Implementierung aber nicht, nur den Lösungsansatz.
Statt auf Leerzeichen wird halt dann auf Buchstaben geprüft.
Delphi-Quellcode:
function ZaehleVorkommenVonIn(Zeichen : Char; Zeichenfolge : String) : Integer;
var
i : Integer;
begin
// Erstmal gehen wir von keinem Wort aus.
Result := 0;
Zeichenfolge := Trim(Zeichenfolge) + ' ';
for i := 1 to Length(Zeichenfolge) do begin
if Zeichenfolge[i] = Zeichen then Result := Result + 1;
end;
end;
var
Zeichenfolge : String;
Anzahl : Integer;
Index : Char;
begin
// Wollen (erstmal) nicht zwischen Groß- und Kleinschreibung unterscheiden.
Zeichenfolge := Trim(AnsiUpperCase(Edit1.Text));
// Einmal für jeden Großbuchstaben.
for Index := 'A' to 'Z' do begin
// zählen
Anzahl := ZaehleVorkommenVonIn(Index,Zeichenfolge);
// Und in eine Zelle den Buchstabenschreiben und die Anzahl seines Vorkommens.
StringGrid1.Cells[0,Ord(Index) - 64] := Index;
StringGrid1.Cells[1,Ord(Index) - 64] := IntToStr(Anzahl);
end;
// Jetzt zählen wir noch die Leerzeichen ...
Anzahl := ZaehleVorkommenVonIn(' ',Zeichenfolge + ' ');
// und wissen, wieviele Worte im Text vorkommen.
StringGrid1.Cells[0,27] := 'Worte';
StringGrid1.Cells[1,27] := IntToStr(Anzahl);
end;