Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841

Разделить строку на слова и занести их в StringGrid

20.09.2012, 13:55. Показов 3355. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток. Кто может подсказать как можно поделить строку по пробелам и закинуть её допустим в стринг грид? Заранее благодарен.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.09.2012, 13:55
Ответы с готовыми решениями:

Как занести данные из Word в StringGrid?
Подскажите пожалуйста как сделать чтобы текст набранный в Word можно было занести в StringGrid или...

Как занести данные из Label в StringGrid?
подскажите пожалуйста как сделать так чтобы дата и время из Label добавлялась в StringGrid? То...

Записать в StringList в одну строку через разделители из StringGrid и отправить в БД
Здравствуйте! Для отправки данных в БД, мне прежде необходимо вытащить данные из Excel, пересчитать...

11
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
20.09.2012, 14:45
Лучший ответ Сообщение было отмечено как решение

Решение

Например, так:
C++
1
2
3
4
5
6
   String s = _T("Вот пример строки с пробелами");
 
   std::auto_ptr<TStringList> sL(new TStringList);
   ExtractStrings(TSysCharSet() << ' ', TSysCharSet(), s.w_str(), sL.get());
 
   StringGrid1->Rows[1]->AddStrings(sL.get());
3
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
20.09.2012, 15:00
Лучший ответ Сообщение было отмечено как решение

Решение

C++
1
2
3
4
5
6
TStringList *list = new TStringList();
TSysCharSet bchars;
bchars << ' ';
AnsiString S = "Вот пример строки с пробелами";
list->Text= WrapText(S,"\n",bchars,0);
StringGrid1->Cols[0]->AddStrings(list);
3
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
20.09.2012, 15:02
Sasha, вот поэтому я пользуюсь auto_ptr Ты забыл удалить StringList...
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
20.09.2012, 15:53
Цитата Сообщение от UI Посмотреть сообщение
Sasha, вот поэтому я пользуюсь auto_ptr Ты забыл удалить StringList...
Тогда так

C++
1
2
3
4
5
6
7
8
TStringList *list = new TStringList();
TSysCharSet bchars;
bchars << ' ';
AnsiString S = "Вот пример строки с пробелами";
list->Text= WrapText(S,"\n",bchars,0);
StringGrid1->Cols[0]->AddStrings(list);
delete list;
list=NULL;
1
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841
20.09.2012, 16:20  [ТС]
Спасибо) А я думал кусками копировать и удалять эти куски)
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
20.09.2012, 17:45
Цитата Сообщение от UI Посмотреть сообщение
поэтому я пользуюсь auto_ptr
Кстати, в плане ликвидации безграмотности, - может объясните мне разницу в применении: вот если так__
C++
1
TStringList *list = new TStringList();
и далее
C++
1
StringGrid1->Cols[0] = list ;
то все работает как надо; а если
C++
1
std::auto_ptr<TStringList> list(new TStringList) ;
то на строку
C++
1
StringGrid1->Cols[0] = list ;
компилятор пишет: Can't convert 'std::auto_ptr<TStringList>' to 'TStrings *'
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
20.09.2012, 18:24
Цитата Сообщение от nick42 Посмотреть сообщение
разницу в применении
У класса auto_ptr для получения самого указателя надо использовать метод get
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
20.09.2012, 18:27
nick42, list - это сам указатель, а не его содержимое. Естественно, ты не сможешь auto_ptr присвоить туда, где ожидается TStringList*. Для этого надо get()-ом взять содержимое указателя.

C++
1
StringGrid1->Cols[0] = list.get();
Кстати, ни первый, ни второй предложенный способ не отработает с Builder XE2, ибо, как всегда, Бракадеры что-то перенакрутили. На этот раз с TSysCharSet. То, что прекрасно работало еще в 2010, теперь не добавляет символы к набору, как результат - строка не разбивается на части. На оф.сайте предлагают вот такой workaround:

Delphi
1
2
3
4
5
6
7
8
   std::auto_ptr<TStringList> list(new TStringList);
   // ExtractStrings(TSysCharSet() << ' ', TSysCharSet(), s.w_str(), list.get());
 
   list->Delimiter = ' '; // разделитель
   list->StrictDelimiter = true;
   list->DelimitedText = s;
 
   StringGrid1->Rows[1] = list.get(); // ->AddStrings(list.get());
Мало того, что ужасно выглядит, так еще и не убирает пустые строки (скажем, если в строке будет подряд 5 пробелов - то к списку добавятся 4 пустые строки, а ExtractString их отсекает)...
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
20.09.2012, 18:36
(я ж писал про безграмотность...) Что конкретно нужно изменить? Я только что нашел аналог в Examples Builder'а и "не почувствовал разницу". Метод "get" в применении к этому примеру..??
П.С. Спасибо! До list.get() я недотумкал...

Добавлено через 6 минут
Цитата Сообщение от UI Посмотреть сообщение
list - это сам указатель, а не его содержимое. Естественно, ты не сможешь auto_ptr присвоить туда, где ожидается TStringList*. Для этого надо get()-ом взять содержимое указателя.
Хорошо. *list - это, грубо говоря 4 (или8) байтов адреса начала списка строк. Что ж тогда list при использовании std::auto_ptr?! Просто "понятие"?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
20.09.2012, 19:19
Что такое auto_ptr вообще, представляешь себе? Вот тут почитай: Умные указатели
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
20.09.2012, 20:03
Если "простейшая реализация шаблона" вмещается в 50 строк, то я лучше Полякову почитаю (или Лукьяненко) - там у меня строки легче усваиваются; уж извините... .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.09.2012, 20:03
Помогаю со студенческими работами здесь

MFC разделить рамку главного вида разделить для документа и диалога
Всем доброго времени суток! У моего MFC-приложения есть свой (пользовательский с расширением *.mx)...

Занести в выходную строку все слова исходной, в которых нет повторяющихся букв
Написал код #include &quot;stdafx.h&quot; #include&lt;iostream&gt; using namespace std; int main() { ...

Разбить строку на слова и занести в данные в таблицу
Собственное по отдельности задачи вроде как элементарны и не знаю с какой стороны подойти......

Вывод данных в StringGrid учитывая разделитель
Добра всем :senor: Возникла необходимость с учетом разделителя - точка с запятой ; считать с тхт...

Возможность вручную писать данные в ячейки StringGrid и заполнение ячеек StringGrid данными из файла после нажатия кнопки
Здравствуйте! Помогите, пожалуйста. Мне необходимо сделать следующее: реализовать возможность...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[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 и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru