@himitsu: Siehe oben: Es kommt halt darauf an, wie viel Text er hat...
@Topic: Am besten zählst du erstmal die absolute Häufigkeit der verschiedenen Buchstaben. Mache dir ein Array of integer mit 26 (wenn du Umlaute mitzählen willst dann eben 29, mit scharfem "s" 30) Feldern. Diese Felder müssen am Anfang natürlich 0 sein. Dann gehst du Zeichen für Zeichen deines Textes durch und erhöhst jeweils den entsprechenden Wert. Also ungefähr so:
Delphi-Quellcode:
var Buchstaben : array[0..25] of integer;
var i : integer;
var c : Char;
begin
//--
if Memo1.Text <> '' then
begin
for i := Low(Buchstaben) to High(Buchstaben) do Buchstaben[i] := 0;
//
for i := 1 to Length(Memo1.Text) do
begin
c := AnsiUpperCase(Memo1.Text[i])[1];
//
case c of
'A' : inc(Buchstaben[0]);
'B' : inc(Buchstaben[1]);
// und so weiter
end;
end;
end;
end;
In dem Buchstaben-Array hast du dann jeweils die absolute Häufigkeit der Buchstaben. Mit der kannst du dann im nächsten Schritt weiterarbeiten. Noch eine kleine Anmerkung: den Case-Teil kannst du auch etwas vereinfachen, z.b. so:
if c in ['A'..'Z'] then inc(Buchstaben[Ord(c)-Ord('A')]);
So kannst du dir die case-Abfrage sparen, ist aber wahrscheinlich etwas schwieriger zu verstehen.
MFG
Patti