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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2011, 15:35   #1
NiKiToZZ-
Пользователь
 
Регистрация: 28.12.2010
Сообщений: 28
По умолчанию Поиск совпадающих ЦИФР в Memo! (не путать с поиском строк!)

Есть поле Memo.В нем много строк. И в строках есть цифры которых мне надо отыскать по паре. Тоесть допустим информация в виде:

лялдялдялда242рпавы
лялялялялял12341аляля
242ляляляляля

и мне нужно чтобы подсветились строчки, 1 и 3, т.к в них совпадающее значение 242. Но! Недопустимо чтобы он выдавал совпадения букв. Это возможно осуществить?
NiKiToZZ- вне форума Ответить с цитированием
Старый 29.01.2011, 15:59   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Нет, это невозможно! Может быть, лет через 20-30 компьютеры станут достаточно мощными, чтобы справиться с такой огромной работой, а пока забудьте.

З.Ы. regexp() и вперед, в чём вопрос?
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 29.01.2011, 16:08   #3
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Мне кажется можно вполне, только не слишком быстро если много строк,
Сейчас освобожусь попробую реализовать.

Хотя, погодите, многовато чтото, может както ограничить условие?
Допустим найти строки содержашие цифры совпадающие с цифрами в выделенной строке?

Последний раз редактировалось vovk; 29.01.2011 в 16:25.
vovk вне форума Ответить с цитированием
Старый 29.01.2011, 16:35   #4
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию


Код:
procedure TForm1.Button1Click(Sender: TObject);
var i, am, c, q1: integer;
begin
  q1:=GetTickCount;
  c:=Memo1.Lines.Count-1;
  Label6.Caption:=IntToStr(c);
  am:=0;
  for i:=0 to c do
    Begin
      if Pos(Edit1.Text, Memo1.Lines[i])<>0 then
        Begin
          // Найдено, делаем что-то
          Inc(am);
        End;
    end;
  Label4.Caption:=IntToStr(GetTickCount-q1)+' ms';
  Label2.Caption:=IntToStr(am);
end;
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 29.01.2011, 16:35   #5
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Если в каждой строке может быть только одно число, то можно вобще просто сделать:

1) формируем новый список на основе имеющегося, в нём выбрасываем все не цифры.
2) запоминаем оригинальные номера строк (через Values[] или Objects[], не так важно)
3) сортируем новый список

Всё, пары, тройки и так далее будут идти друг за другом в новом списке. Соответствие номерам строк в оригинальном списке получим через Values[]/Objects[], которые заполнили на втором шаге.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 29.01.2011, 16:40   #6
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
Сообщение от AlDelta Посмотреть сообщение
Pos(Edit1.Text, Memo1.Lines[i])
ну, это читерство ) А если Edit1.Text некому заполнить?
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 29.01.2011, 16:49   #7
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

Цитата:
Сообщение от NiKiToZZ- Посмотреть сообщение
и мне нужно чтобы подсветились строчки, 1 и 3, т.к в них совпадающее значение 242.

Цитата:
Сообщение от veniside Посмотреть сообщение
ну, это читерство ) А если Edit1.Text некому заполнить?
Код:
.....
var str:string;
.....
str:='242';
.....
Pos(str, Memo1.Lines[i])
.....
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 29.01.2011, 16:51   #8
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
Если в каждой строке может быть только одно число, то можно вобще просто сделать:

1) формируем новый список на основе имеющегося, в нём выбрасываем все не цифры.
2) запоминаем оригинальные номера строк (через Values[] или Objects[], не так важно)
3) сортируем новый список

Всё, пары, тройки и так далее будут идти друг за другом в новом списке. Соответствие номерам строк в оригинальном списке получим через Values[]/Objects[], которые заполнили на втором шаге.
Я примерно так и хотел сделать.
только потом подумал как быть с выделением, и немного передумал, а на счёт сортировки первоисточника чтото не подумал.
vovk вне форума Ответить с цитированием
Старый 29.01.2011, 16:56   #9
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
Сообщение от AlDelta Посмотреть сообщение
Код:
.....
var str:string;
.....
str:='242';
.....
Pos(str, Memo1.Lines[i])
.....
Спасибо, это ещё хуже ) Сильно сомневаюсь, что ТС так уж влюблён в число 242. Гораздо вероятней задача состоит в нахождении совпадений любых числел.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 29.01.2011, 17:03   #10
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
Спасибо, это ещё хуже ) Сильно сомневаюсь, что ТС так уж влюблён в число 242. Гораздо вероятней задача состоит в нахождении совпадений любых числел.
Тогда, наверное, ТС сам не смог определить какие строки надо подсвечивать... Потому что:

Цитата:
Сообщение от NiKiToZZ- Посмотреть сообщение
лялдялдялда242рпавы
лялялялялял12341аляля
242ляляляляля
но:
Цитата:
Сообщение от NiKiToZZ- Посмотреть сообщение
и мне нужно чтобы подсветились строчки, 1 и 3, т.к в них совпадающее значение 242.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск совпадающих или похожих значений jekich Microsoft Office Excel 4 14.08.2010 20:55
Удаление совпадающих строк в Combobox panuta Microsoft Office Excel 1 01.06.2010 21:03
удаление совпадающих строк varelik Общие вопросы Delphi 8 20.03.2010 21:57
Поиск строк по символам в Memo Nocturnal Помощь студентам 2 15.12.2009 17:33
Поиск и удаление совпадающих строк в разных листах hybrid84 Microsoft Office Excel 11 24.07.2009 05:13