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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2010, 00:23   #1
rita3
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 17
По умолчанию Поиск по совпадениям (delphi)

Здравствуйте. Помогите, пожалуйста!!!
Мне нужно организовать поиск по совпадениям, т.е., чтобы при вводе строки в Edit1.Text программа искала совпадающие символы, слова, предложения (без учета регистра) в каждой строке в Memo1, выделяла подходящую строку Lines, затем при нажатии на Button1 загружала соответствующий этому Lines определенный файл text.txt в Memo2 и определенную картинку в Image1.
Буду очень благодарна за любой совет и помощь!
rita3 вне форума Ответить с цитированием
Старый 06.05.2010, 01:16   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Я не знаю всех нюансов Вашего задания, поэтому написал примерный шаблон Вашей программы. В нём почти всё есть. Вам осталось только подкорректировать его как Вам надо.
Код:
Procedure TForm1.Button1Click(Sender: TObject);
Var
I: Integer;
Begin
For I:=0 To Memo1.Lines.Count-1 Do
Begin
If Pos(AnsiUpperCase(Edit1.Text),AnsiUpperCase(Memo1.Lines.Strings[I])) <> 0 Then
Begin
//Memo1.SetFocus;
//Memo1.SelStart:=0; Номер символ с которого начинается выделение
//Memo1.SelLength:=Length(Memo1.Lines[I]);
//Выделяем строку в мемо, ориентируемся на переменную I
End;
End;
End;
Procedure TForm1.Button2Click(Sender: TObject);
Begin
If {Выделена такая строка (или можете использовать Case) = 2} Then
Begin
Memo2.Lines.LoadFromFile('Путь к файлу');
Image1.Picture.LoadFromFile('Путь к картинке');
End;
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 08.05.2010, 04:06   #3
rita3
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 17
По умолчанию Поиск по совпадениям

Что-то у меня не получается. При вводе любого текста в Edit1 в Memo1 все время выделяются две первые строки, а не совпадающие.
Может я не правильно изложила задачу или в коде не разбираюсь((
И я даже не знаю, как объявить в Button1, что в Memo1 выделена такая-то строка(((
Так выглядит моя форма
Изображения
Тип файла: jpg 1.jpg (13.8 Кб, 70 просмотров)
rita3 вне форума Ответить с цитированием
Старый 08.05.2010, 12:13   #4
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

В общем я написал Вашу программу. Только Memo1 заменил на ListBox т.к. у Вас там идут разделы и будет целесообразней для этого использовать ListBox и с ним проще сделать выделение строк. (Но если надо с Memo, то можно сделать и с ним) Вот исходничёк: Поиск по совпадениям.rar
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 09.05.2010, 03:46   #5
rita3
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 17
Смущение Все тот же поиск по совпадениям

Большое Вам спасибо за программку!
Все, конечно же, работает замечательно, но когда я набираю текст, допустим, «газеты» в Edit1, то выделяется первая строка с совпадением «книги, газеты, журналы», но есть просто раздел «газеты», который на последней строке и он не выделяется.
И еще, что сделать, чтобы при выделении строки в ListBox1 мышкой, она появлялась в Edit1?
Всех с праздником Великой Победы!!!
rita3 вне форума Ответить с цитированием
Старый 09.05.2010, 11:49   #6
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
Большое Вам спасибо за программку!
Не за что.
Цитата:
Все, конечно же, работает замечательно, но когда я набираю текст, допустим, «газеты» в Edit1, то выделяется первая строка с совпадением «книги, газеты, журналы», но есть просто раздел «газеты», который на последней строке и он не выделяется.
Чтобы выделялось всё чётко, удалите в цикле просто слово Break и вместо него напишите такой код:
Код:
If ListBox1.Items.Strings[I] = Edit1.Text Then
Begin
Break;
End;
Цитата:
И еще, что сделать, чтобы при выделении строки в ListBox1 мышкой, она появлялась в Edit1?
В событии ListBox'a ListBox1Click напишите такой код:
Код:
Procedure TForm1.ListBox1Click(Sender: TObject);
Begin
Edit1.Text:=ListBox1.Items[ListBox1.ItemIndex];
End;
Цитата:
Всех с праздником Великой Победы!!!
Спасибо!
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в Delphi Katrina_89 БД в Delphi 5 07.04.2010 18:18
Поиск файлов (Delphi) VadEr Помощь студентам 4 05.12.2009 21:08
delphi поиск по базам hitch1 БД в Delphi 4 30.11.2009 12:09
Поиск по индексу (Delphi) VadEr Помощь студентам 0 06.10.2009 19:03
Delphi, поиск процесса north Помощь студентам 1 20.03.2008 22:06