Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.073 Beiträge
 
Delphi 12 Athens
 
#17

AW: String buchstabenweise in array einlesen

  Alt 13. Jun 2011, 01:22
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat