5 / 5 / 0
Регистрация: 03.03.2011
Сообщений: 39

использование FindComponent в циклах для считывания/присвоения параметров существующих объектов

03.03.2011, 01:45. Показов 5710. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу помочь разобраться как использовать FindComponent для обработки свойств существующих объектов в С++ Buider 2010

Задача: вывести из большого количества Edit'ов (TEdit *Edit) сдержимое их поля Text (Editn->Text) в файл
Дано: 42 объекта класса TEdit (соответcтвенно от Edit1 к Edit42)
а вывести надо примерно так:
C++
1
2
for (i=1;i<43;i++)
{out<<Editi->Text.t_str()<<endl;}
объясните пожалуйста как здесь использовать FindComponent.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.03.2011, 01:45
Ответы с готовыми решениями:

Можно ли и целесообразно ли использовать лямбду для присвоения значений полям массива объектов?
Хочу использовать лямбду для присвоения значений полям массива объектов(такое что :- int size = 0; cin &gt;&gt; size; Children*ch=new...

Программа для считывания параметров привода через PROFIdrive
Есть люди, которые могут подсказать информацию о том, как на Delphi написать простую программу для считывания параметров привода через...

использование прерывания 21h для считывания с клавиатуры
Разработать, написать и отладить программу управления перемещением символа (например, &quot;*&quot;) в пределах заданного на экране окна.

37
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
03.03.2011, 02:36
C++
1
2
3
4
5
6
7
8
9
10
TStringList *list = new TStringList;
for(int i = 0; i < ComponentCount; i++) { 
  TEdit* edit; 
  edit = dynamic_cast<TEdit*>(Components[i]); 
  if(edit)
  list->Add(edit->Text); 
}
list->SaveToFile("C:\\text.txt");
delete list;
list = NULL;
0
5 / 5 / 0
Регистрация: 03.03.2011
Сообщений: 39
03.03.2011, 02:43  [ТС]
а именно через ofstream никак?

ой чет совсем обленился всё понял спасибо
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
03.03.2011, 02:45
почему никак ... пробуйте.

Добавлено через 1 минуту
я для наглядности загнал строки в список, вы - куда вам удобнее или нужнее.
0
5 / 5 / 0
Регистрация: 03.03.2011
Сообщений: 39
03.03.2011, 03:08  [ТС]
C++
1
2
3
4
5
6
7
8
out<<"\n<td>\n<ol>"<<endl;
    for (j = 1; j < 8; j++)
        {
        TEdit* edit;
        edit = dynamic_cast<TEdit*>(Components[i]);
        out<<"<li>"<<edit->Text.t_str()<<"</li>"<<endl;
        }
    out<<"</ol>\n</td>";
надо вот так в чем ошибка - содержимое полей не выводится
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
03.03.2011, 03:19
for (j = 1; j < 8; j++)
{
TEdit* edit;
edit = dynamic_cast<TEdit*>(Components[i]);
может, поэтому?

Добавлено через 1 минуту
это приказ такой - формировать HTML документ из консоли ?
0
5 / 5 / 0
Регистрация: 03.03.2011
Сообщений: 39
03.03.2011, 03:22  [ТС]
а почему бы и нет?))
и всёж не понял почему ваш коментарий мне не понятен может я дуб?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
03.03.2011, 03:29
а так ...
for (j = 1; j < 8; j++)
{
TEdit* edit;
edit = dynamic_cast<TEdit*>(Components[i]);
0
5 / 5 / 0
Регистрация: 03.03.2011
Сообщений: 39
03.03.2011, 03:32  [ТС]
ну точно дуб))

но всё равно не выводит(
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
03.03.2011, 03:33
for(int i = 0; i < ComponentCount; i++) {
TEdit* edit;
edit = dynamic_cast<TEdit*>(Components[i]);
и почему вы не использовали ComponentCount? dynamic_cast и есть приведение компонента к Эдит. Может, при j < 8 ваш Эдит просто не попадает в диапазон.
0
5 / 5 / 0
Регистрация: 03.03.2011
Сообщений: 39
03.03.2011, 03:36  [ТС]
потому что мне надо вывести инфу с абсолютно конкретных эдитов в данном куске с Edit1 по Edit7 включительно
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
03.03.2011, 03:42
убил... а откуда это
for (j = 1; j < 8; j++)
знает, какой вам эдит нужон ?
0
5 / 5 / 0
Регистрация: 03.03.2011
Сообщений: 39
03.03.2011, 03:44  [ТС]
ну объясни тогда дураку как надо? я с FindComponent первый раз сталкиваюсь.. неумный пока ещё
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
03.03.2011, 03:47
а сам то как думаешь ?

Добавлено через 1 минуту
1. FindComponent мы не используем
2. Компонент имеет некие свойства
0
5 / 5 / 0
Регистрация: 03.03.2011
Сообщений: 39
03.03.2011, 03:48  [ТС]
да не знаю я! я то думал что j определяет № компонента ввиде Editi судя по всему это не так.. так что не знаю я как
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
03.03.2011, 03:59
не так, j это просто , по-простому , номер следующего цикла, а свойство компонента, это , например, Name.
кроме того, компонент имеет такое свойство Tag , его можно задать программно - Edit1->Tag = 1; или в Инспекторе объектов. Учитывая, что у тебя всего 7 эдитов, сделать это не сложно, чтобы не было повторений,можно начать с 101, 102 и т.д. Можно попробовать и програмно:
C++
1
2
3
4
for(int i = 0; i < ComponentCount; i++) {
TEdit* edit;
edit = dynamic_cast<TEdit*>(Components[i]);
edit[i]->Tag = 100+i;
...
Вот это свойство я бы и использовал:
C++
1
2
3
4
for(int i = 0; i < ComponentCount; i++) {
TEdit* edit;
edit = dynamic_cast<TEdit*>(Components[i]);
if (edit[i]->Tag == 100+i) {...}
Но в данном случае, кажись, все проще
C++
1
2
3
4
for(int i = 0; i < ComponentCount; i++) {
TEdit* edit;
edit = dynamic_cast<TEdit*>(Components[i]);
if (edit) {out<< ...}
Добавлено через 1 минуту
последний вариант пришел на ум в самом конце, так что за лекцию извини...
0
5 / 5 / 0
Регистрация: 03.03.2011
Сообщений: 39
03.03.2011, 04:08  [ТС]
Но в данном случае, кажись, все проще
C++
1
2
3
4
for(int i = 0; i < ComponentCount; i++) {
TEdit* edit;
edit = dynamic_cast<TEdit*>(Components[i]);
if (edit) {out<< ...}
и что же это меняет?

Учитывая, что у тебя всего 7 эдитов
их не семь а 42 это в данном блоке 7...

касательно Name можно ли тогда сделать так:
C++
1
2
3
4
for(int i = 0; i < ComponentCount; i++) {
TEdit* edit;
edit = dynamic_cast<TEdit*>(Components[i]);
if (edit->Name == "Edit"+i) {...}
?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
03.03.2011, 04:12
C++
1
if (edit->Name == "Edit"+i)
попробуй... только, наверное
C++
1
if (edit->Name == "Edit"+IntToStr(i))
0
5 / 5 / 0
Регистрация: 03.03.2011
Сообщений: 39
03.03.2011, 04:19  [ТС]
теперь пишет exeption.. чет там про rtl140.bpl и read of adress 00000008
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
03.03.2011, 04:30
про какой вариант? для эксперимента можно пробовать "Edit1" или какое там у него имя
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.03.2011, 04:30
Помогаю со студенческими работами здесь

Использование CURL для считывания информации из дивов
Хочу попробовать написать самостоятельно скрипт, ибо очень нужен, который будет считывать информацию со страницы, которую я буду вводить...

Создание объектов на основе уже существующих
Добрый день! Есть список объектов List&lt;classA&gt; lst = new List&lt;classA&gt;(); В котором хранятся список его наследников с со своими...

Применение циклов для расчета параметров объектов на С++
Здравствуйте! Помогите, пожалуйста, в решении такой проблемы. Написал простенькую программу на С++, в главной функции рассчитываются...

Можно ли как-то получить коллекцию всех существующих объектов класса?
Добрый вечер. Предположим я насоздавал объектов, сколько не известно. Предположим они создаются по нажатию кнопки. Есть ли способ...

Использование параметров для запроса в MYSQL
Добрый день. Подскажите что не правильно делаю... Мануал Mysql читал, делал по нему, но увы с параметрами не получилось... Проблема...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru