Hier eine weitere Möglichkeit (obwohl wir so etwas schon einmal in der
DP hatten, da müssten auch hochoptimierte Lösungen zu finden sein):
Delphi-Quellcode:
type TCharArray = array['A'..'Z'] of integer; //für die Buchstaben A bis Z, ggf. erweitern
function CountChars(const Str: string): TCharArray;
var i: integer;
begin
FillChar(Result,SizeOf(Result),0);
for i := 1 to Length(Str) do
if Upcase(Str[i]) in ['A'..'Z'] then //falls oben erweitert, auch hier anpassen
inc(Result[Upcase(Str[i])]);
end;
Eine mögliche Auswertung könnte dann z.B. so aussehen:
Delphi-Quellcode:
procedure TMainForm.btnCountClick(Sender: TObject);
var arr: TCharArray;
c: Char;
begin
arr := CountChars('Emil und die Detektive');
for c := Low(arr) to High(arr) do
ListBox1.Items.Add(Format('%s: %d',[c,arr[c]]));
end;