Код:
procedure let(var hash: TStringList; key, value: string);
var s: string;
begin
if hash.Values[key] <> '' then
hash.Delete(hash.IndexOf(Format('%s=%s', [key, hash.Values[key]])));
hash.Add(Format('%s=%s', [key, value]));
end;
procedure add(var hash: TStringList; key: string);
begin
if hash.Values[key] = '' then
let(hash, key, '1')
else
let(hash, key, IntToStr(StrToInt(hash.values[key])+1))
end;
procedure TForm1.Button1Click(Sender: TObject);
var arr: array[0..5] of string;
var hash: TStringList;
var i: integer;
var s: string;
begin
arr[0] := 'a';
arr[1] := 'b';
arr[2] := 'c';
arr[3] := 'a';
arr[4] := 'a';
arr[5] := 'b';
hash := TStringList.Create; hash.Sorted := true;
for i := 0 to high(arr) do add(hash, arr[i]);
Memo1.Lines.Assign(hash);
end;
компилятор сам по себе не виноват, но конкретно такие программы
намного быстрей писать на руби(например), если только не в целях обучения
зы те 2 процедуры костыля можно убрать, если использовать модуль отсюда
http://www.delphipages.com/forum/showthread.php?t=26334