Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2014, 13:54   #21
royun
Пользователь
 
Регистрация: 20.05.2011
Сообщений: 67
По умолчанию

Serge_Bliznykov,
жду Вашей помощи.
royun вне форума Ответить с цитированием
Старый 28.01.2014, 14:36   #22
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы так хотели?
sgcompare_src.rar
Project1_exe.rar

По сути всё решения вот:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  TS : TStringList;
  i, indexS  : integer;
begin
  TS := TStringList.Create;
  for i:=1 to StringGrid1.RowCount-1 do begin
     indexS := TS.IndexOf(StringGrid1.Cells[2,i]);
     if indexS<0 then begin {ещё не было такой строки, добавляем}
        TS.AddObject(StringGrid1.Cells[2,i], TObject(1));
     end
     else {такое значение уже было ранее, увеличим счётчик на 1}
       TS.Objects[indexS] := TObject(Integer(TS.Objects[indexS])+1);
  end;

  StringGrid2.RowCount := TS.Count+1;
  for I := 0 to TS.Count - 1 do begin
    StringGrid2.Cells[0,i+1] := IntToStr(i+1);
    StringGrid2.Cells[1,i+1] := TS.Strings[i];
    StringGrid2.Cells[2,i+1] := IntToStr( Integer(TS.Objects[i]));
  end;

  FreeAndNil(TS);
end;

разумеется, можно было не выпендриваться с AddObject и приведением целого типа к TObject а банально взять динамический массив на n значений и использовать его. Но, думаю, что это будет сопоставимое по затратам/производительности решение...

Последний раз редактировалось Serge_Bliznykov; 28.01.2014 в 14:38.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.01.2014, 06:46   #23
royun
Пользователь
 
Регистрация: 20.05.2011
Сообщений: 67
По умолчанию

Serge_Bliznykov,
Ваш код при StringGrid.RowCount порядка 60 тыс. записей очень долго работает и почему-то не отображает вот этот участок кода и везде считает кол-во повторов равной 1-це.

Цитата:
Сообщение от royun Посмотреть сообщение
Serge_Bliznykov,
Ваш код при StringGrid.RowCount порядка 60 тыс. записей почему-то не отображает вот этот участок кода и везде считает кол-во повторов равной 1-це.
Приношу свои извинения, я был не прав.

Последний раз редактировалось Stilet; 29.01.2014 в 09:01.
royun вне форума Ответить с цитированием
Старый 29.01.2014, 08:07   #24
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
код при StringGrid.RowCount порядка 60 тыс. записей очень долго работает
кстати, выполнение кода можно ускорить, если порядок отображения результатов не важен.
Дело в том, что если сделать TS (TStringList) сортированным (TS.sorted := true), то можно использовать бинарный поиск вместо .IndexOf использовать TS.Find. Это намного быстрее.
Ну и надо понимать, что сотни тысяч ( and over ) записей за одну секунду всё равно не обработаешь


Хотел сказать Вам "пожалуйста", но увидел, что мне не на что отвечать, ибо слов благодарности не видно...
Спишем это на забывчивость...

p.s. кстати, вашу задачу можно легко формулами в MS Excel реализовать
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.01.2014, 09:20   #25
royun
Пользователь
 
Регистрация: 20.05.2011
Сообщений: 67
По умолчанию

Огромное Вам спасибо. Извините что я не сказал Вам спасибо. Вы мне очень сильно помогли. Дело в том, что я отлаживал программу, наводил красоту. Еще раз спасибо.
royun вне форума Ответить с цитированием
Старый 29.01.2014, 09:23   #26
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от royun Посмотреть сообщение
Огромное Вам спасибо. Извините что я не сказал Вам спасибо. Вы мне очень сильно помогли. Дело в том, что я отлаживал программу, наводил красоту. Еще раз спасибо.
Да ничего страшного. я так и понял, что просто закрутились, не успели! бывает

Пожалуйста!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Excel поиск и отбор колонок в stringGrid Ant1Player БД в Delphi 5 14.06.2013 20:50
Сортировка в stringgrid по определенныым строкам. F.A.(tm) Общие вопросы Delphi 2 06.02.2011 18:14
Список колонок в StringGrid artemavd Общие вопросы Delphi 15 26.01.2011 13:12
присвоить строкам StringGrid ранги MAX722 Общие вопросы Delphi 1 26.04.2010 10:24
Сравнение и вывод 4х колонок попарно andrew1232 Microsoft Office Excel 9 03.03.2010 19:37