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

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

14.05.2012, 15:44. Показов 9679. Ответов 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
8488 / 6155 / 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
8488 / 6155 / 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
8488 / 6155 / 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
8488 / 6155 / 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
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru