Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> StringGrid, Пройтись наиболее быстро 
V
    Опции темы
Guedda
Дата 1.6.2006, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Добрый день. Сейчас столкнулся со следующей задачей:
Имеется StringGrid с огромным множеством полей и записей. Записи все идентичные (допустим "A-B").
Какой в таких случаях наиболее быстрый алгоритм перебора всего StringGrid?

Заранее благодарен. 


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
skyboy
Дата 1.6.2006, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 4
Всего: 260



Guedda, немного не понятно. Приведи пример. Пока что видно только желание перебирать одинаковые записи и не ясно, зачем. 
PM MAIL   Вверх
Yanis
Дата 1.6.2006, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Действительно. Может прояснив задачу мы сможем решить твоую проблему наиболее оптимально. Что значит "записи все идентичные", т.е. "<символ>-<символ>" или они все одинаковые?

Добавлено @ 12:30 
Конечно могу предложить использовать альтернативный компонент. Думаю что-нибудь отсюда да подойдёт http://torry.net/pages.php?id=114 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Guedda
Дата 1.6.2006, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Цитата(skyboy @  1.6.2006,  13:00 Найти цитируемый пост)
Приведи пример

Вот пример:
Код

Январь | Февраль | Март | Апрель | Май | Июнь | Июль | Август | Сентябрь | Октябрь
AB-BA   | BA-BB      | BA-BA| BB-AB   |...
BA-BB   | BA-BA      | ... и так далее...

Так вот мне необходимо провести анализ всех ячеек (поиск определенной ячейки...). Как это быстрее реализовать? 


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
skyboy
Дата 1.6.2006, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 4
Всего: 260



Если ячеек так много, а возможных комбинаций - только 16, то какую "одну ячейку" ты ищешь? Или тебе надо найти для обработки, скажем, всё ячейки с "АВ-ВВ"? Тогда, коль ничего не известно о принципе формирования этих значений, какой может быть ещё подход кроме перебора? 
PM MAIL   Вверх
_hunter
Дата 1.6.2006, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



можно пойти с другой стороны -- при заполнении сетики заполняй так же мапу/мультимапу (компонент/библиотеку придется поискать) тогда по значению "AB-BA" сразу же найдеш все ее координаты 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
murod
Дата 1.6.2006, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 17.9.2005
Где: Uzbekistan/Tashke nt

Репутация: 1
Всего: 4



наверно вот так будет по проше. 
Код

type // обявляеш класс для хранения индекса стринг грида.
Tgridcellindex=class
  RowInd,CellInd:integer;
end;

// findstr-строка которую надо найти. если найдет то возврашает координаты ячейки-tgridcellindex.

function FindGridData(stringgrid:tstringgrid;findstr:string):tgridcellindex;
var List:TStringList;gridInd:Tgridcellindex;
i,j,findIndex:integer;
begin
list:=TStringList.Create;
try
 for i:=0 to stringgrid.ColCount-1 do
  for j:=0 to stringgrid.RowCount-1 do
   begin
    gridind:=Tgridcellindex.create;
    gridind.RowInd:=j;
    gridind.CellInd:=i;
    list.AddObject(StringGrid1.Cells[i,j],gridInd);// добавляем в стрингЛист
   end;
 if list.Find(findstr,findIndex) then// если нашол то возврашает TRUE
   begin 
    result:=list.Objects[findIndex] as tgridcellindex ;
   end else result:=nil;// если нет то возврашаем nil
finally list.free; end;
end;


Вроде находит быстро. если надо несколько раз искать то list.sort; надо добавить , находит быстрее. 
   

Это сообщение отредактировал(а) murod - 1.6.2006, 16:55
--------------------
Люди всего мира берегите природу!  
PM MAIL ICQ   Вверх
Guedda
Дата 2.6.2006, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Цитата(murod @  1.6.2006,  17:43 Найти цитируемый пост)
наверно вот так будет по проше. 

Вот. Спасибо огромное.
+1
 


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0552 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.