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

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

14.11.2011, 14:19. Показов 4081. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
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
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru