Der Fehler tritt an der markierten Stelle auf:
Delphi-Quellcode:
while i<=length(str) do
begin
o:=ord(upcase(str[i]))-ord('A')+1;
alist[o]:=alist[o]+1; // <<---- hier
inc(i,step);
end;
Du gehst davon aus, daß hier nur Buchstaben ankommen, was aber definitiv nicht der Fall ist. Damit schreibst du lustig im Speicher herum und zerstörst dabei wahrscheinlich den einen oder anderen Zeiger...
Gruß Hawkeye