Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск слова в Memo, как организовать..подскажите.. 
V
    Опции темы
TaNK
Дата 26.5.2007, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Скажите пожайлуста, мне надо найти слово в мемо...но я тут поискал на форуме..и нашел что мемо для таких случаев не лучший варианнт..и лучше использовать RichEdit, так ли это...
и вот код который нашел, для поиска слова и его выделения, а мне просто необходимо посчитать количество этих слов..
Код

AnsiString searched_word = "switch";
int a=0;
 int i = RichEdit1->Text.Pos(searched_word);
 RichEdit1->HideSelection = true;
 RichEdit1->SelStart = i - 1;
 RichEdit1->SelLength = searched_word.Length();
a=a+1; //это я вставил....
 RichEdit1->SelAttributes->Style = RichEdit1->SelAttributes->Style << fsBold;


будет ли правильно работать..просто нет под рукой билдера ..



--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Klin
Дата 26.5.2007, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 20
Всего: 25



Для выделения текста и Memo подойдет, просто если вы текстовый редактор создаете, тогда конечно лучше RichEdit, так черт с ним, можно и Memo.

Выделенние заданного текста
Код

 int StartPos = 0; // начальная позиция поиска
 if (CheckBox1->Checked == true) StartPos = Memo1->SelStart-1; // если указано, что с курсора - задаем позицию
 AnsiString SearchArea = Memo1->Text.SubString(StartPos,Memo1->Text.Length()); // создаем временную переменную для поиска
 if (SearchArea.Pos(Edit1->Text)) { // если слово есть,  то
  Memo1->SetFocus(); // задать фокус на Memo (иначе не увидишь :) )
  Memo1->SelStart = StartPos + SearchArea.Pos(Edit1->Text)-1-CheckBox1->Checked; // начальная позиция
  Memo1->SelLength = Edit1->Text.Length(); // длина выделения
 }


На форме должен быть Edit - искомое слово, CheckBox - искать с курсора и Memo - нужный текст


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Rodman
Дата 26.5.2007, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 7
Всего: 122



Код

for (int i=0;i<Memo1->Lines->Count;i++)
    if(pos(Edit1->Text, Memo1->Lines->Strings[i])>0)
           ShowMessage("Found!");


а так?
PM MAIL WWW Skype GTalk YIM MSN   Вверх
TaNK
Дата 26.5.2007, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Rodman @ 26.5.2007,  11:30)
Код

for (int i=0;i<Memo1->Lines->Count;i++)
    if(pos(Edit1->Text, Memo1->Lines->Strings[i])>0)
           ShowMessage("Found!");


а так?

попробую.....спасибо..

Добавлено через 1 минуту и 42 секунды
Цитата(TaNK @ 26.5.2007,  12:07)
Цитата(Rodman @ 26.5.2007,  11:30)
Код

for (int i=0;i<Memo1->Lines->Count;i++)
    if(pos(Edit1->Text, Memo1->Lines->Strings[i])>0)
           ShowMessage("Found!");


а так?


попробую.....спасибо..а для подсчета количества слов...пойдет так?
Код

int a=0;
for (int i=0;i<Memo1->Lines->Count;i++)
    if(pos(Edit1->Text, Memo1->Lines->Strings[i])>0)
           a=a+1;



--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Rodman
Дата 26.5.2007, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 7
Всего: 122



Цитата(TaNK @  26.5.2007,  11:07 Найти цитируемый пост)
пойдет так?

в полне!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
TaNK
Дата 26.5.2007, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а еще вопросик, а как возможно огрганизовать поиск если необходимо пару слов искать...в одном тексте..например switch и case..подскажите плиз...


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
TaNK
Дата 27.5.2007, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Rodman - какую необходимо подключить библиотеку, а то билдер ругается на функцию pos, копил пишет Call to undefined function pos?



--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Klin
Дата 27.5.2007, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 20
Всего: 25



Цитата(TaNK @  27.5.2007,  08:55 Найти цитируемый пост)
Call to undefined function pos?



TaNK, ты то что я написал вообще не читал? Функция Pos должна принадлежать переменной типа AnsiString. 

Код

 if(Edit1->Text.Pos(Memo1->Lines->Strings[i])>0)


    



--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Anikmar
Дата 27.5.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Klin @  27.5.2007,  11:27 Найти цитируемый пост)
if(Edit1->Text.Pos(Memo1->Lines->Strings[i])>0)

А что в чемы мы ищем, я что-то не понял
PM MAIL ICQ   Вверх
Klin
Дата 27.5.2007, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 20
Всего: 25



А ну так там еще и наоборот написано smile :

Код

if(Memo1->Lines->Strings[i].Pos(Edit1->Text)>0)



--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
TaNK
Дата 27.5.2007, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Klin @ 27.5.2007,  11:57)
А ну так там еще и наоборот написано smile :

Код

if(Memo1->Lines->Strings[i].Pos(Edit1->Text)>0)

Код

AnsiString poisk="case";
if(Memo1->Lines->Strings[i].Pos(poisk)>0)

ты это имел ввиду?

Добавлено через 1 минуту и 7 секунд
я хочу не из эдита их искать, а просто забить какое-то слово уже в код..


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
TaNK
Дата 29.5.2007, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



AnsiString poisk="case";
if(Memo1->Lines->Strings[i].Pos(poisk)>0)
поиск производится не только слова case, но и in_case, mocase
КАк сделать так чтобы было точное совпадение, искалось именно слово case


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Klin
Дата 29.5.2007, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 20
Всего: 25



TaNK, добавь пробелы перед и после слова smile


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
TaNK
Дата 30.5.2007, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Klin @ 29.5.2007,  17:44)
TaNK, добавь пробелы перед и после слова smile

не помогло...что можно еще придумать...?


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
SenkraD
Дата 30.5.2007, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 9
Всего: 23



Попробуй использовать TFindDialog. C с ним насколько я помню можно работать в невидимом режиме.

P.S. Больше пока ничего в голову не прелезло


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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