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

Разбить текст в Edit по признаку

23.01.2013, 23:12. Показов 2185. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В Edit есть набор символов. Например "Part1.Common.". Как лаконичней вычленить из содержимого отдельно Part1 и отдельно Common для последующего использования? Циклически "бежать" по строке до первой точки, а потом до последней?
Может есть что-то более функциональное?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.01.2013, 23:12
Ответы с готовыми решениями:

Текст из edit разбить на слова, отсортировать и залить в memo
Дан текст содержащий от 2 до 50 слов в каждом из которых от 1 до 8 латинских букв, между соседними словами не менее одного пробела, за...

Считать с Edit текст, убрать последний символ из строки и снова записать в Edit
Всем доброго времени суток. У меня тут возник вопрос, как можно считать с Edit текст, а потом убрать последний символ из этой строки и...

ТЕКСТ: С Edit'a в масив и обратно в EDIT
вот у меня задание (сам себе захотел научиться) но так и не научился ( зхотел ТЕКСТ перевести в масив (чтобы потом работать с елементами...

14
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
23.01.2013, 23:24
Здесь рулят строковые функцие
0
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 7
23.01.2013, 23:33  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
Здесь рулят строковые функцие
Это-то я понял. В посте Разбить 1 Edit на 2 Editы кое-что подсмотрел, но хочется чего-то...
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
23.01.2013, 23:35
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::FormShow(TObject *Sender)
{
 Edit1->Text = "Part1.Common.";
 
}
//-----------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 ShowMessage(Edit1->Text.SubString(1,Edit1->Text.Pos(".")-1));
 ShowMessage(Edit1->Text.SubString(Edit1->Text.Pos(".")+1,6));
}
1
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 7
23.01.2013, 23:44  [ТС]
Это бы работало, но (!) я не знаю длину Part1 и длину Common. Знаю что формат строки такой. Т.е. разделен точками между собой и в конце. Может стоит попробывать Delimiter?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
23.01.2013, 23:48
или так:__
C++
1
2
3
     String Str = "Ìàøà.ìûëà,ðàìó;ñ ìûëîì";
     ExtractStrings(TSysCharSet() << ';'<<'.'<<',',
                    TSysCharSet(), Str.c_str(), Memo1->Lines);
здесь в строку задаются символы-разделители ( : . , ) и разделенные ими слова передаются в список (в данном случае это Memo-Lines)
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
23.01.2013, 23:52
А куда ты хочешь эти части строки вкинуть в переменные или куда?
0
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 7
24.01.2013, 00:02  [ТС]
Тоже работает, но я в любом случае должен проверить, что формат исследуемого слова именно такой, и если условия выполнены, т.е. присутствует ТОЛЬКО точка в середине, и ТОЛЬКО точка в конце и ничего лишнего, начинаю процедуры

Добавлено через 1 минуту
Цитата Сообщение от Sasha Посмотреть сообщение
А куда ты хочешь эти части строки вкинуть в переменные или куда?
По итогам проверки одна часть указывает на одну из веток кода, а вторая на тип обработчика. Это естественно переменные

Добавлено через 5 минут
Изначально мысль была следующая - пустить цикл по строке, пока не найдет первую точку, эту часть временно записали в какой-то Tmp1, читаем дальше после первой точки. Если точки нет - условие не выполнено. Если уткнулись еще в одну точку и после нее больше ничего нет, получаем Tmp2 и поехали дальше по коду. Но условия постоянно меняются...
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
24.01.2013, 00:03
- ну так создай StringList, запиши туда слова, разделенные одним разделителем - точкой, и потом проанализируй по значению счетчика StringList - сколько слов получилось; и слова в StringList распределены по своим индексам (по порядку: 0 1 2 ...).
0
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 7
24.01.2013, 00:28  [ТС]
Я и думал через TStringList. Delimiter присвоить точке, в DelimitedText закинуть строку, а потом вытаскивть содержимое Strings[i] и кидать в Tmp[i]... Но уткнулся в какой-то замкнутый круг. Сейчас попробую найти, что делал.

Добавлено через 9 минут
Пробовал так
C++
1
2
3
4
5
6
7
TStringList *sl = new TStringList();
sl->DelimitedText = "Part1.Common.";
sl->Delimiter = '.';
 for(int i = 0; i < sl->Count; i++) 
 {
 dynamic_cast<TEdit*>(FindComponent("Edit" + IntToStr(i + 1)))->Text = sl->Strings[i];
 }
Допустим, чтобы увидеть, что работает раскинуть на Edit1 и Edit2

Пусть текст возмем просто, ну пока с прямого объявления

Добавлено через 9 минут
Не раскидывает, хоть стреляй
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
24.01.2013, 00:46
Вот так делит
C++
1
2
3
4
5
6
7
8
9
TStringList *sl = new TStringList();
 sl->Clear();
 sl->Delimiter = '.';
 sl->DelimitedText = "Part1.Common.";
 
 for(int i = 0; i < sl->Count; i++)
 {
   dynamic_cast<TEdit*>(FindComponent("Edit" + IntToStr(i + 1)))->Text = sl->Strings[i];
 }
1
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 7
24.01.2013, 11:03  [ТС]
Благодарю за помощь! Помощь неоценимая! А то к концу дня (ночи) уже стал ходить кругами.


Но утром с более свежей головой хочу реализовать немного не так и прошу натолкнуть на мысль каким образом:

1. взять из Edit'a строку,
2. сделать проверку на наличие разделителей (т.е. они такие и никакие иначе), если же условие не выполнено содержимое Edit оставить без изменений. Если все нормально - первую часть вернуть (оставить) в то же поле Edit, а вторую отправить в Label.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
24.01.2013, 11:59
А использовать примеры, которых вам предоставили предостаточно выше, для решения и этой "свежей" мысли мысль более свежую голову не посещала?
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
24.01.2013, 13:14
попробую натолкнуть (если я правильно понял задачу)__
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TStringList *sl = new TStringList;
    ExtractStrings(TSysCharSet() << '.' ,
                    TSysCharSet(), Edit1->Text.c_str(), sl);
    if (sl->Count==2 && Edit1->Text[Edit1->Text.Length()]=='.')
    {
      Edit1->Text = sl->Strings[0];
      Label1->Caption = sl->Strings[1];
    }
    delete sl;
}
2
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 7
24.01.2013, 14:23  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
попробую натолкнуть (если я правильно понял задачу)
Thanx, разобрался!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.01.2013, 14:23
Помогаю со студенческими работами здесь

Разбить 1 Edit на 2 Editы
Реально ли разбить содержимое 1 Edita на 2 Editы. Например, Edit1 содержит текст &quot;Волгоград-Москва&quot;, надо чтоб Edit2 был...

Разбить текст в Edit
Нужно написать процедуру, которая разбивает текст в edit на 3 части и записывает каждую часть в строковую переменную. Части в тексте...

Как разбить на части текст вводимый в edit(memo)?
Добрый день. Нужно решить задачу, и для решения необходимо разбить вводимый текст (последовательность чисел). Текст можно ввести через Edit...

Разбить файл на маленькие по признаку
Уважаемые форумчане, прошу вас помочь с поставленной задачей. Сильно не пинать, я новичок :) Пользователь выбирает исходный файл, ...

Разбить на несколько групп массив по признаку
Здравствуйте! Нужна помощь, подскажите, если кто знает, как решить задачу. У меня имеется список значений дат &quot;с&quot; и...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru