Показать сообщение отдельно
  #12  
Старый 14.06.2012, 19:23
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

Код:
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
Ответить с цитированием