FillChar ist doch keine extreme Optimierung?
Und den Rest kann man sich aus jedem guten Delphi-Lehrbuch rausholen.
Gut, das For-In ist vielleicht neu und es geht nicht in vielen älternen Delphiversionen, aber zu Extremoptimiert würde ich auch das nicht zählen.
Versuche es doch einmal so (nicht optimiert):
Delphi-Quellcode:
procedure TForm11.Button1Click(Sender: TObject);
var i,laenge :integer;
wort :string;
BS_array: array ['a'..'z'] of byte;
c : char;
begin
wort := 'hallo';
laenge := Length(wort);
for c:=low(BS_array) to high(BS_array) do BS_array[c]:=0;
For i := 1 to (laenge) do begin
c := wort[i];
BS_array[wort[i]] := BS_array[wort[i]] +1;
end;
end;
Wozu das C in der letzen Schleife, wenn es dann nicht genutzt wird?
Ich vermute mal du wolltest
BS_array[c] := BS_array[c] +1;
schreiben.
PS: gegenüber einiger anderer Codes hier ist mein Cod sogar fehlerunanfälliger.
z.B. das
array ['a'..'z'] of byte;
im gerade gezeigten Code kann zu einem Pufferüberlauf führen,
wenn in
wort
nicht nur Kleinebuchstaben von A bis Z vorkommen.
Schließlich ist fast immer die Index- und Bereichsprüfung deaktiviert.
Das Array[Char] ist beim
Unicode zwar ein 1/4 MB groß, aber dafür liegen garantiert alle Zeichen irgendwo in dessen Bereich.