Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/49: Рейтинг темы: голосов - 49, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 54

Поиск слова в Memo

14.05.2012, 15:44. Показов 9577. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть 2 поля Memo с текстом, есть поле Edit, куда вводится слово. Как найти количество вхождений слова с Edit в Memo?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.05.2012, 15:44
Ответы с готовыми решениями:

Поиск неявно заданного слова в Memo
Здравствуйте, подскажите, пожалуйста, как реализовать такое: В Memo есть строки, некоторые из них имеют примерно такой вид: <h3>1....

Поиск слова в файле и вывод строки в поле Memo
Помогите написать код для кнопки после нажатия она должна считать даные с компонента Edit, проверить даные в файле и вивести рядок с...

Поиск слова в Memo
необходимо выполнить поиск в memo, при чем найти нужно не только первое слово, но и последующие вхождения, т.е. в memo есть текст с arr,...

18
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.05.2012, 16:37
Как реализовать FindNext в FindDialog для компонента RichEdit?
Выделение предложений в RichEdit C++ Builder
0
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 54
14.05.2012, 16:48  [ТС]
Это, по моему, не совсем то. Мне нужно прогнать слово по 2 текстам в Мемо, и сделать какой-нибудь счетчик, чтоб посчитать их количество.
Вот как-то так пробую, это правда неправильно, но может кто-нибудь подправит:
C++
1
2
3
4
5
6
7
8
9
10
AnsiString word;
int p, w = 0;
 
word = Edit1->Text;
for( int i =0; i<Memo3->Lines->Count; i++)
{
if (Memo3->Lines[i] = word)
{
w = w+1;
}
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.05.2012, 17:21
Думаю то
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int start=0,stop=0;//Глобально обьявляем
String Text="Что-то";
//-----------------------------------------------------------------
TSearchTypes Stype;
Stype = Stype << stMatchCase;
 
// В цикле
{
stop = RichEdit1->FindText(Text,start,RichEdit1->Text.Length(),Stype);
start = stop + 1;
// Что-то делаем
}
//------------------------------------------------------------------
0
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 54
14.05.2012, 17:49  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int start=0,stop=0;
 
void __fastcall TForm1::Button5Click(TObject *Sender)
{
   AnsiString Text=Memo3->Text;
 
  TSearchTypes Stype;
Stype = Stype << stMatchCase;
 
 
{
stop = Edit1->FindText(Text,start,Edit1->Text.Length(),Stype);
start = stop + 1;
}
 }
[C++ Error] Unit1.cpp(205): E2451 Undefined symbol 'TSearchTypes'

А вообще тот пример, который я раньше приводил переделать чуток нельзя?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
14.05.2012, 17:50
FedExpress,если у Вас в эдите и в строках мэмо действительно слова, то почти все правильно, только логическое условие пишется иначе: не

if (Memo3->Lines[i] = word)
, а
if (Memo3->Lines[i] == word)
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.05.2012, 17:58
Используйте RichEdit вместо Memo

Добавлено через 2 минуты
И
C++
1
stop = RichEdit1->FindText(Text,start,RichEdit1->Text.Length(),Stype);//  не  Edit
0
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 54
14.05.2012, 18:16  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
FedExpress,если у Вас в эдите и в строках мэмо действительно слова, то почти все правильно, только логическое условие пишется иначе: не

, а
Попробовал, выдает
[C++ Error] Unit1.cpp(208): E2094 'operator==' not implemented in type 'TStrings' for arguments of type 'AnsiString'
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
14.05.2012, 18:18
правильно! я не заметил: не ->Lines[i], а ->Lines->Strings[i]
1
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 54
14.05.2012, 18:33  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
правильно! я не заметил: не ->Lines[i], а ->Lines->Strings[i]
Сделал так, но снова проблема. в Label7 ничего не выводит, хотя я ввожу слово для поиска такое, что оно точно есть в тексте. Прикрепляю код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
AnsiString word;
int p, w = 0;
 
word = Edit1->Text;
for( int i =0; i<Memo3->Lines->Count; i++)
{
if (Memo3->Lines->Strings[i] == word)
{
w = w+1;
Label7->Caption=w;
}
 
 
}
0
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
14.05.2012, 18:48
Label7->Caption = IntToStr(w);

Добавлено через 4 минуты
Цитата Сообщение от FedExpress Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
AnsiString word;
int p, w = 0;
 
word = Edit1->Text;
for( int i =0; i<Memo3->Lines->Count; i++)
{
if (Memo3->Lines->Strings[i] == word)
{
w = w+1;
Label7->Caption=w;
}
 
 
}
разве этот код работает, по моему он проверят является ли строка равной Edit, а не считает:
Цитата Сообщение от FedExpress Посмотреть сообщение
количество вхождений слова с Edit в Memo?
можно ли средством Memo сделать такой поиск?
0
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 54
14.05.2012, 18:50  [ТС]
Цитата Сообщение от Drygba Посмотреть сообщение
Label7->Caption = IntToStr(w);

Добавлено через 4 минуты
разве этот код работает, по моему он проверят является ли строка равной Edit, а не считает:

можно ли средством Memo сделать такой поиск?
Не помогло

"разве этот код работает, по моему он проверят является ли строка равной Edit, а не считает"
мне тоже так кажется
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.05.2012, 18:52
Memo нет.
С помощью методов строк можно.
Методы Pos() и SubStr().
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
14.05.2012, 18:53
FedExpress, а что не так?
0
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 54
14.05.2012, 18:53  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Memo нет.
С помощью методов строк можно.
Методы Pos() и SubStr().
Можешь на примере этого кода примерно показать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
AnsiString word;
int p, w = 0;
 
word = Edit1->Text;
for( int i =0; i<Memo3->Lines->Count; i++)
{
if (Memo3->Lines->Strings[i] == word)
{
w = w+1;
Label7->Caption=w;
}
 
 
}
0
 Аватар для Sergey-K
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
14.05.2012, 18:59
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int count = 0;
  for(int i = 0; i < Memo1->Text.Length() - (Edit1->Text.Length() + 1); i++)
    if(AnsiString(Memo1->Text.c_str() + i).SetLength(Edit1->Text.Length()) == Edit1->Text)
      count++;
  Label1->Caption = IntToStr(count);
}
1
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 54
14.05.2012, 19:24  [ТС]
Цитата Сообщение от Sergey-K Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int count = 0;
  for(int i = 0; i < Memo1->Text.Length() - (Edit1->Text.Length() + 1); i++)
    if(AnsiString(Memo1->Text.c_str() + i).SetLength(Edit1->Text.Length()) == Edit1->Text)
      count++;
  Label1->Caption = IntToStr(count);
}
Вооот, это уже работает. Спасибо большое
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
14.05.2012, 19:27
Label - это строка. Хотите увидеть целое - правильнее писать так:
Code
1
 Label7->Caption=IntToStr(w);
0
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 54
14.05.2012, 19:30  [ТС]
Цитата Сообщение от Sergey-K Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int count = 0;
  for(int i = 0; i < Memo1->Text.Length() - (Edit1->Text.Length() + 1); i++)
    if(AnsiString(Memo1->Text.c_str() + i).SetLength(Edit1->Text.Length()) == Edit1->Text)
      count++;
  Label1->Caption = IntToStr(count);
}
Правда заметил неточности при подсчете. Например слово встречается 80 раз, а программа выдает 84. Так же и с другим словом: я насчитал 40 а программа выдает 50. С чем это связано?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.05.2012, 19:30
Помогаю со студенческими работами здесь

Поиск слова в строке (memo)
Есть код. unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ...

Поиск слова в memo с последующим его удалением
есть код поиска слова в тексте procedure TForm1.Button1Click(Sender: TObject); var Find: string; I: integer; begin ...

Поиск слова в компоненте Memo через Pos
В общем написал я поиск слова в Memo, через функцию Pos(...), но слово чувствительно к регистру и + если в тексте несколько таких слов, он...

Работа с компонентом memo - поиск слова,или строчек
Есть программа - моя,в ней есть компонент memo,мне нужно чтоб по нажатию типо label1 в тексте компонента отыскалась нужная мне строка...

Поиск слова в memo, и удаление символов перед ним
Есть memo в котором содержится например такой текст: По сравнению с более развёйй&lt;del&gt;&lt;del&gt;рнутыми...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru