Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Поиск в Меmо 
:(
    Опции темы
mr.Anderson
Дата 4.10.2005, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

Репутация: 3
Всего: 128



Не ругайтесь, это последний вопрос, я думаю... Как выполнить поиск в TМemo? Про поиск в ЛистБоксе rsm мне более-менее объяснил, за что ему отдельное спасибо. Осталось только понять, как же искать строчки в Memo, + разумеется, Memo должно "прокручиваться" до выделенного слова, а слово должно выделяться.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
_hunter
Дата 4.10.2005, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



просто так искать не получится -- нет у него соотв. метода => берем memo->Lines->Text b и в нем или вручную ищем или Pos() с последующим удалением найденного текста
позиционирование: SelStart / SelLength


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


iOS Lead Developer
****


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

Репутация: 3
Всего: 128



Цитата
последующим удалением найденного текста

А вот это еще нафига?! Мне не надо удалять! Мне надо найти! И выделить! Кстати, как выделять, я так и не въехал.... Хотя, может быть, вот так получится? (пишу сходу):
Код

AnsiString text=Memo1->Lines->Text;
if(text.Pos(Form2->Edit1->Text))
{
 ShowMessage("Найдено совпадение!");
 int x=text.Pos(Form2->Edit1->Text);
 Memo1->SelStart=x;
 Memo1->SelLength=x+Form2->Edit1->Text.Length();
 return;
}
ShowMessage("Нет совпадений... I'm very sorry...");



--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
_hunter
Дата 4.10.2005, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата
А вот это еще нафига?

чтбы последующие вхождения найти ( а не только первое )

читаю тоже сходу...
кажись, должно получится. только к x-у длину текста приплюсовывать не нужно -- хватит и просто длины


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


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Элементарно просто, как и все в С++ Builder smile
Если нужно реализовать пользовательский интерфейс, то достаточно использовать
TSearchFind или TSearchFindFirst. Даже кодировать ничего не придется

Ах, да. Я и забыл. Вы ведь сторонник делать все ручками smile
Тогда это не пойдет.


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
mr.Anderson
Дата 4.10.2005, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

Репутация: 3
Всего: 128



Цитата
чтбы последующие вхождения найти ( а не только первое )

Что-то я не совсем понял. Можете переделать мой код с вашими поправками?
Цитата
только к x-у длину текста приплюсовывать не нужно -- хватит и просто длины

Да, действительно, это я что-то не то...
Цитата
Вы ведь сторонник делать все ручками

Именно так. Я хочу научиться делать все своими руками, чтобы больше знать о языке и программировании вообще. А не пользоваться стандартными компонентами, где уже все реализовано и понимать ничего, кроме алгоритма решения задачи, не нужно. smile


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
_hunter
Дата 4.10.2005, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(sim7 @ 4.10.2005, 18:42)
Цитата
чтбы последующие вхождения найти ( а не только первое )

Что-то я не совсем понял.

есть строка aabbaa
как ты собираешся искать вторые aa без удаления первых?


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


iOS Lead Developer
****


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

Репутация: 3
Всего: 128



Смысл понятен. Я имею в виду, что не совсем понял, как это написать. Я еще раз зайду завтра вечером, надеюсь, вы хоть-что нибудь напишете... smile Или просто алгоритм скажите, а код я сделаю (попробую сделать) сам. Так даже лучше будет.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Vyacheslav
Дата 5.10.2005, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Цитата(sim7 @ 4.10.2005, 18:42)
Именно так. Я хочу научиться делать все своими руками, чтобы больше знать о языке и программировании вообще. А не пользоваться стандартными компонентами, где уже все реализовано и понимать ничего, кроме алгоритма решения задачи, не нужно. smile

Вроде бы намерения хорошие, только вот реализация ... Я бы Вам для начала порекомендовал проштудировать книжку по С++ и по ООП. Дело в том, что судя по вашему коду Вы не учитесь, а усиленно закрепляете Ваши ошибки. А если уж хотите учится и не использовать стандартные компоненты, то почему используете TMemo вместо винконтролов, AnsiString -вместо std::string? И где Ваши собственные классы-адаптеры?
Пока имеем в наличии бестолковое использование опять же "стандартных" VCL-компонентов, причем "бестолковость" объясняется желаением сделать самому.


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
_hunter
Дата 5.10.2005, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



да какой алгоритм? сразу после Pos() делаем str.Delete(1, pos + searchStr.Length() - 1);
все

P.S.
если все своими руками делать -- тогда уже не std::string а char* юзать нужно smile


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


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Цитата(_hunter @ 5.10.2005, 10:33)
если все своими руками делать -- тогда уже не std::string а char* юзать нужно smile

все таки std::string. STL входит в стандарт и не явлется чем то левым


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
mr.Anderson
Дата 5.10.2005, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

Репутация: 3
Всего: 128



Что-то не получается. Я ввел вот такой код (пока без ваших поправок, hunter):
Код

 Form6=new TForm6(this);
 if(Form6->ShowModal()==mrCancel) return;
 AnsiString find=Memo1->Lines->Text;
 if(find.Pos(Form6->Edit1->Text))
 {
  MessageBox(NULL,"Указанная строка обнаружена!","Информация",MB_ICONINFORMATION);
  int x=Form6->Edit1->Text.Length();
  Memo1->SelStart=find.Pos(Form6->Edit1->Text);
  Memo1->SelLength=x;
  return;
 }
 MessageBox(NULL,"Указанная строка не найдена.","Информация",MB_ICONINFORMATION);

Програ говорит, что "Указанная строка обнаружена". Однако, найденное не выделяет... Подскажите плиз почему и что надо поправить.

Vyacheslav, я в сотый раз повторяю. Какой бы хорошей книга не была, я не могу ее понять! У меня есть книги по C++, по C++ Builder, но я плохо понимаю, когда рядом нет учителя, у которого можно все разъяснить! А учителя-то у меня как раз и нет. Почему я и сижу на этом форуме и надеюсь на помощь через интернет... Поймите правильно мое положение. Я стараюсь, но раз не получается, то что я могу сделать?
Цитата
почему используете TMemo вместо винконтролов, AnsiString -вместо std::string

Потому что с объектами TMemo и типом AnsiString я познакомился раньше и уже умею хоть немного с ними работать. А другие указанные вами компоненты мне еще незнакомы. Зачем переучиваться? И еще. Раз уж вам так не нравится мое выражение "делать все своими ручками", то замените его на "смешанное программирование". smile


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Vyacheslav
Дата 5.10.2005, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Цитата(sim7 @ 5.10.2005, 16:00)
то замените его на "смешанное программирование". smile

ОК . Я его заменю на "смешное программирование" smile


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
_hunter
Дата 5.10.2005, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



sim7, фокус ему отдай: Memo1->SetFocus();
или HideSelection в false поставь


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


iOS Lead Developer
****


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

Репутация: 3
Всего: 128



Цитата
смешное программирование

Знаете, это мне перестает нравиться. То, что вы умеете, это, конечно, плюс вам. Но не нужно смеяться над теми, у кого не получается выучить!

hunter, сейчас буду пробовать, спасибо.
Добавлено @ 16:54
hunter, я понял, что надо вот так сделать:
Код

 Form6=new TForm6(this);
 if(Form6->ShowModal()==mrCancel) return;
 AnsiString find=Memo1->Lines->Text;
 if(find.Pos(Form6->Edit1->Text))
 {
  find.Delete(1,Form6->Edit1->Text.Length()-1);
  MessageBox(NULL,"Найдено!","Инфо",MB_ICONINFORMATION);
  int x=Form6->Edit1->Text.Length();
  Memo1->SelStart=find.Pos(Form6->Edit1->Text)-1;
  Memo1->SelLength=x;
  return;
 }
 MessageBox(NULL,"Не найдено.","Инфо",MB_ICONINFORMATION);

Но так не работает. Выделяется только первое найденное.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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