Nja, bei
Unicode macht der Code eventuell nicht ganz, was er soll. (aber zumindestens gibt es keine Zugriffsverletzungen)
Aber am Sichersten ist hier nicht
array[0..255]
aka
array[Byte]
, sondern
array[Char]
, also ein Array mit Feldern für jeden Char-Wert.
Und man kommt beim Char auch ohne Konvertierung aus, da es ja schon Chars sind.
Delphi-Quellcode:
myarray = array[Char] of Integer;
FillChar(myarray, SizeOf(myarray), 0);
for i := 1 to Length(mystring) do
Inc(myarray[mystring[i]]);
// mit Forin sieht es auch ganz nett aus (wenn das Delphi sowas schon kann)
for C in mystring do
Inc(myarray[C]);
for C := '0' to '9' do
WriteLn(C, ' ', myarray[C]); // man kann die Typumwandlungen vom Write/Writeln auch benutzen, wenn man mag
bzw. nur das, was man braucht
Delphi-Quellcode:
myarray = array['0'..'9'] of Integer;
FillChar(myarray, SizeOf(myarray), 0);
for i := 1 to Length(mystring) do
if mystring[i] in ['0'..'9'] then
Inc(myarray[mystring[i]]);
for C in mystring do
if CharInset(mystring[i], ['0'..'9']) then
Inc(myarray[C]);
for C := '0' to '9' do // for C := Low(myarray) to High(myarray) do
WriteLn(C, ' ', myarray[C]);