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

Поиск в TMemo и копирование в Memo2

14.11.2011, 14:19. Показов 4033. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите пожалуйста решить задачу. Заранее спасибо!

Есть 3 компонента на форме Memo1, Memo2 и Button1. В Memo1 загружены текстовые строки:

aaaaaaaaaa
bbb7777bbb
cccccccccc

Необходимо, что бы при нажатии кнопки, строка, содержащая 7777, копировалась в Memo2.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.11.2011, 14:19
Ответы с готовыми решениями:

Копирование четных строк из Memo1 в Memo2
Добрый вечер! Есть форма в ней три компонента Memo1, Memo2 и Button, нужно что-бы при нажатии на кнопку все четные строки из Memo1 были...

Просто из Memo1 в Memo2
из Memo1 перенести символы в Memo2 в Memo2 символы будут расположены в порядке который я задам. допустим Text потом Text потом Text... ...

Переписать строки из Memo1 в Memo2
Доброго времени суток. Помогите пожалуйста. Задача такова, из текста, введённого в Memo1, необходимо строки, содержащие двузначные числа,...

17
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
14.11.2011, 14:54
C++
1
2
3
int pos = Memo1->Text.Pos("7777");
AnsiString str = ExtractString(Memo1->Text,pos-1,4);
Memo2->Lines->Add(str);
0
3 / 3 / 2
Регистрация: 18.01.2011
Сообщений: 54
14.11.2011, 14:57  [ТС]
Выдаёт ошибку: E2268 Call to undefined function 'ExtractString'
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
14.11.2011, 15:09
ExtractStrings

Добавлено через 4 минуты
пардон, SubString
C++
1
2
3
int pos = Memo1->Text.Pos("7777");
AnsiString str = Memo1->Text.SubString(pos-1,4);
Memo2->Lines->Add(str);
0
3 / 3 / 2
Регистрация: 18.01.2011
Сообщений: 54
14.11.2011, 15:09  [ТС]
Теперь вообще беда:

E2064 Cannot initialize 'const TSysCharSet &' with 'AnsiString'
E2342 Type mismatch in parameter 'Separators' (wanted 'const TSysCharSet &', got 'AnsiString')
E2064 Cannot initialize 'const TSysCharSet &' with 'int'
E2342 Type mismatch in parameter 'WhiteSpace' (wanted 'const TSysCharSet &', got 'int')
E2034 Cannot convert 'int' to 'char *'
E2342 Type mismatch in parameter 'Content' (wanted 'char *', got 'int')
E2193 Too few parameters in call to '_fastcall ExtractStrings(const TSysCharSet &,const TSysCharSet &,char *,TStrings *)'
W8004 'pos' is assigned a value that is never used
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
14.11.2011, 15:10
да я уже поправил - засел у меня в голове этот экстракт....
0
3 / 3 / 2
Регистрация: 18.01.2011
Сообщений: 54
14.11.2011, 15:22  [ТС]
Да, работает! Только pos-0,4...

Скажите ещё пожалуйста, а как определить кол-во символов в Memo? Дело в том, что искомый текст будет разный и соответственно нужно подставлять переменную pos-0,dlina

Добавлено через 4 минуты
И ещё, если искомого текста (в данном случае 7777) не найдено, то ничего не копируется в Memo2. А сейчас, если отсутствует 7777, программа берёт первые четыре символа Memo1...
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
14.11.2011, 15:34
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
AnsiString slovo = Edit1->Text;
AnsiString txt = Memo1->Text;
AnsiString sub_str;
int txt_len = txt.Length();
int slovo_len = slovo.Length();
int slovo_pos = txt.Pos(slovo);
int i;
 
for (i=1;i<=txt_len;i++) {
  if (slovo_pos) {
    sub_str = txt.SubString(slovo_pos,slovo_len);
    Memo2->Lines->Add(sub_str); 
  }
  else {
    ShowMessage("Нет такого слова, дружок...");
  }
}
0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
14.11.2011, 15:40
Просьба большая можно кооменты написать на каждую строку? я просто именно с формами с билдером только начал пытаться разбираться, раньше просто с ++ возился
Цитата Сообщение от LK Посмотреть сообщение
int pos = Memo1->Text.Pos("7777"); вот тут переменной пост призваиваем значение постоянное? опрделенные символы? или присваиваем адрес где хранятся эти символы? тоесть символы можно менять будет но выводить будет именно те которые по адресу этому? или просто символы присваиваем в виде 7777?
AnsiString str = Memo1->Text.SubString(pos-1,4);
Memo2->Lines->Add(str);
Добавлено через 4 минуты
AnsiString это что за тип такой? и когда он используется? чем просто от string отличается?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
14.11.2011, 16:03
AnsiString - основной строковый тип в билдере.
Лекцию я вам читать не буду, это вам сюда:
http://promsite.us/AnsiString_1.html
http://promsite.us/AnsiString_2.html
http://promsite.us/AnsiString_3.html
http://promsite.us/AnsiString_4.html
http://promsite.us/AnsiString_5.html
http://promsite.us/AnsiString_6.html
http://promsite.us/AnsiString_7.html
http://promsite.us/AnsiString_8.html
http://promsite.us/AnsiString_9.html
http://promsite.us/AnsiString_10.html
http://promsite.us/AnsiString_11.html
http://promsite.us/AnsiString_12.html
или в книги.

А прокомментировать? Почему бы и нет...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// присваиваем переменной текст эдита
AnsiString slovo = Edit1->Text;
// присваиваем переменной текст мемо
AnsiString txt = Memo1->Text;
// определяем переменную типа стринг
AnsiString sub_str;
// присваиваем числовой переменной значение длины текста в мемо
int txt_len = txt.Length();
// присваиваем числовой переменной значение длины текста в эдит
int slovo_len = slovo.Length();
// приваиваем числовой переменной индекс первого символа исковой строки
int slovo_pos = txt.Pos(slovo);
int i;
// в цикле перебираем все символы в тексте мемо
for (i=1;i<=txt_len;i++) {
// если нашли вхождение искомого слова
  if (slovo_pos) {
// извлекаем это слово во временную строку 
    sub_str = txt.SubString(slovo_pos,slovo_len);
// заносим временную строку в мемо
    Memo2->Lines->Add(sub_str); 
  }
// если искомого слова в тексте нет
  else {
// сообщаеи пользователю эту приятную новость
    ShowMessage("Нет такого слова, дружок...");
  }
}
0
3 / 3 / 2
Регистрация: 18.01.2011
Сообщений: 54
14.11.2011, 16:04  [ТС]
Да, только ещё нужно добавить выход из цикла break;. И последнее, спрошу... Я как то не сразу заметил. Я писал что нужно не "7777" копировалось в Memo2, а строка, содержащая "7777". Т.е. сначала я вытаскиваю строку, а из этой строки уже то, что мне нужно.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
14.11.2011, 16:10
пример у вас есть - только идти надо не по тексту мемо, а по строкам мемо:
C++
1
Memo->Count
если нашли строку, содержащую это слово, заносите ее во второе мемо:
C++
1
Memo2->Lines-Add(Memo1->Strings[i])
как-то-так...
1
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
14.11.2011, 16:11
спасибо от души помогли почитаю
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
14.11.2011, 16:13
посмотрите сюда - Работа с полем Memo - получение подстроктам есть пример со строкой мемо
0
3 / 3 / 2
Регистрация: 18.01.2011
Сообщений: 54
15.11.2011, 11:04  [ТС]
Спасибо большое LK! Помогли... Приятно общаться с людьми, которые не пытаются показать степень своего интеллекта, унижая других...

Добавлено через 2 часа 3 минуты
Если кому пригодится...

C++
1
2
3
4
5
6
7
8
9
String finde=Edit1->Text;
 
   for(int i=0;i<Memo1->Lines->Count;i++)
   {
      if(Memo1->Lines->Strings[i].Pos(finde))
      {
         Edit2->Text=Memo1->Lines->Strings[i];
      }
   }
Edit1 - искомое слово, Memo1 - где ищем, Edit2 - куда копируем строку с искомым словом...
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
26.04.2012, 20:00
Цитата Сообщение от neoarey Посмотреть сообщение
String finde=Edit1->Text;
for(int i=0;i<Memo1->Lines->Count;i++)
Это поиск, а как сейчас к нему добавить подсветку?
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
26.04.2012, 20:14
Подсветка синтаксиса в TMemo
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
26.04.2012, 20:55
kzru_hunter, там ведь указан пример на TRichEdit , и что на Memo это не возможно.

А я хотел бы что то вроде этого)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.04.2012, 20:55
Помогаю со студенческими работами здесь

Построчный перенос значений из Memo1 в Memo2
Создать программу «Дж-ккалл», которая переводит количество полученной энергии организмом за день. Количество съеденных за день блюд читать...

Перенос десятичных чисел из memo1 в memo2
void __fastcall TStartMenu::XYClick(TObject *Sender) { DM-&gt;Lines-&gt;Clear(); C-&gt;Lines-&gt;Clear(); { int *arDM = new int; ...

Выбрать из memo1 и перевести на кириллице и добавить memo2
доброе дна всем. надо выбрать из memo1 и перевести на кирилице . и добавить memo2

Копирование из Memo1 в Memo2
Стоит задача копировать содержимое memo1 в memo2 до тех пор пока например не встретится слово &quot;стоп&quot;. Не хватает синтаксиса...

Поиск в Memo1 перенос в Memo2
Здравствуйте! Нужна помощь. в Memo1 открывается текстовый файл со списком, нужно чтобы в Memo2 можно было вывести, например текст от 1 до...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 05.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru