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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2010, 11:20   #1
Des
Форумчанин
 
Регистрация: 12.11.2008
Сообщений: 124
По умолчанию Сравнение строк методом перебора в StrinGride'е с возвратом индекса

Здравствуйте!
Не могу придумать код, перебора строк в StringGrid. Мне нужно найти строку из Edit'а в StringGrid при этом, если она не будет найдена, то применить ее из Edit к String~
Des вне форума Ответить с цитированием
Старый 22.10.2010, 11:34   #2
MaxNik2009
Форумчанин
 
Аватар для MaxNik2009
 
Регистрация: 17.09.2009
Сообщений: 294
По умолчанию

Ну примерно так(писал без delphi):
Код:
var
  flag: boolean;
  i, j :integer;
begin
  flag:= fasle; // true - если строка найдена
  for I:= 0  to КоличествоСтрок - 1 do
  forj:= 0 to Количество столбцов - 1do
  begin
     if StringGrid1.Cells[i,j] = Edit.Text then
     begin
       flag:= true;
       break; 
     end;
  end;
  
  //если не найдена строка
  if not flag then
  begin
    ищем где-то там......
 end;
принимаю благодарности в письменном виде( весы слева)...
MaxNik2009 вне форума Ответить с цитированием
Старый 22.10.2010, 13:10   #3
Des
Форумчанин
 
Регистрация: 12.11.2008
Сообщений: 124
По умолчанию

Все делал а вот про болеан и не подумал
Все заработало спасибо +
Des вне форума Ответить с цитированием
Старый 22.10.2010, 13:14   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Возможно можно немного ускорить процесс, если перед
Код:
 if StringGrid1.Cells[i,j] = Edit.Text then
написать
Код:
if Length(StringGrid1.Cells[i,j])=Length(Edit.Text) then
это в случае если строки должны сильно отличаться друг от друга. Дело в том, что определение длины строки быстрей чем прямое сравнение. И если строки имеют разную длину, то однозначно они не равны. А уж если равны, то тогда можно и провести относительно медленное сравнение строк.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 22.10.2010, 14:23   #5
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

да, и еще не забудте, что строки "Des" и "des" не будут равными. Это я к тому, что если вы хотите считать равными строки независимо от регистра.
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 22.10.2010, 15:39   #6
Des
Форумчанин
 
Регистрация: 12.11.2008
Сообщений: 124
Хорошо

Цитата:
Сообщение от Utkin Посмотреть сообщение
Возможно можно немного ускорить процесс, если перед
Код:
 if StringGrid1.Cells[i,j] = Edit.Text then
написать
Код:
if Length(StringGrid1.Cells[i,j])=Length(Edit.Text) then
это в случае если строки должны сильно отличаться друг от друга. Дело в том, что определение длины строки быстрей чем прямое сравнение. И если строки имеют разную длину, то однозначно они не равны. А уж если равны, то тогда можно и провести относительно медленное сравнение строк.
Не сдержался спрошу. но работы получается больше, нам же надо еще узнать длину каждой строкиперед сравнением этой длины
Des вне форума Ответить с цитированием
Старый 23.10.2010, 14:26   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Верно. Я же написал
Цитата:
это в случае если строки должны сильно отличаться друг от друга
То есть если информация будет разнородная, то скорее всего число символов в строке будет различно. В таком случае мой вариант будет быстрее. Потому что работы будет больше только в случае если размеры строк совпадают. Однако из условий задачи не ясно какие это будут строки. Это только вариант. Если Вы не уверены, можете провести замеры времени работы обоих алгоритмов и выбрать тот вариант, который Вам подходит больше.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решить методом перебора (Delphi) marina43 Помощь студентам 8 05.01.2010 17:14
Поиск текста методом последовательного перебора Des Общие вопросы Delphi 5 30.04.2009 16:15
Поиск кратчайшего пути в графе методом полного перебора в глубину. Метод ветвей и границ Олинька Помощь студентам 1 24.12.2008 16:22
1) Поиск кратчайшего пути в графе методом полного перебора в ширину(очередь) Serega123 Помощь студентам 3 30.10.2008 22:26