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

Повторное использование кода

20.08.2011, 21:39. Показов 1523. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код, который необходимо использовать повторно в разных местах программы:

Я пытаюсь это сделать при помощи объявления функции AddRows() .
1. Прописываю
C++
1
void AddRows();
в заголовочном файле в секции public.
2. В файле .cpp -
C++
1
2
3
4
5
6
7
8
 
void AddRows(){
TEdit *mashEdit1=new TEdit(Form1->ScrollBox1); 
     mashEdit1->Parent=Form1->ScrollBox1;
 
     mashEdit1->Width=42;
     .............................
}
3. В нужном месте - произвожу вызов ф-ции:
C++
1
AddRows();
Когда в программе обращаюсь к членам ф-ции типа: mashEdit1->Text
Выдаёт ошибку: Undefined symbol 'mashEdit1'.
В чём причина? Что я сделал не так? Как ещё возможно выполнить требуемую задачу?

P.S.: Я ещё попытался объявить видимость так:
AddRows()::mashEdit1; - тогда выдаёт кроме указанной ошибки - Statment missing;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.08.2011, 21:39
Ответы с готовыми решениями:

Компиляцию кода MAtlab в C++Builder и использование преобразованного кода .м в C++Builder
Компиляцию кода MAtlab в C++Builder и использование преобразованного кода .м в C++Builder -Как преобразовать код Matlab в C++Builder? ...

Использование C++ кода внутри программы на C: какие есть варианты?
Есть программа на C++, и в ней кое-какие нужные функции, которые хотелось бы использовать в программе на C. Переписывать заново функции с...

Повторное использование кода
Добрый день. Подскажите пожалуйста новичку. Есть блок кода, который приходится использовать во многих частях приложения. То есть один и тот...

10
 Аватар для Михаил Марюфич
15 / 15 / 5
Регистрация: 29.03.2011
Сообщений: 144
20.08.2011, 21:49
в сpp файле писать нужно так:
C++
1
void TForm1::AddRows(){
по крайней мере у меня работает
0
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
20.08.2011, 21:50
Написал то же самое, поэтому мой пост можно удалить
0
1 / 1 / 1
Регистрация: 18.07.2011
Сообщений: 90
20.08.2011, 22:08  [ТС]
Я так сделал. Это абсолютно ничего не меняет. Ошибка та же. Член mashEdit->Text - неопределён
Тем более я, что класс TForm1 я и не покидал. Весь код и так находится внутри этого класса.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.08.2011, 22:19
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void AddRows(TEdit *mashEdit1);
// в заголовочном файле в секции public.
// или
void AddRows();
TEdit *mashEdit1;
//  и дальше, как у вас было
// 2. В файле .cpp -
void AddRows(TEdit *mashEdit1){
  mashEdit1=new TEdit(Form1->ScrollBox1); 
  mashEdit1->Parent=Form1->ScrollBox1;
  mashEdit1->Width=42;
     .............................
}
// 3. В нужном месте - произвожу вызов ф-ции:
AddRows(mashEdit1);
// Когда в программе обращаюсь к членам ф-ции типа: mashEdit1->Text
0
 Аватар для Михаил Марюфич
15 / 15 / 5
Регистрация: 29.03.2011
Сообщений: 144
20.08.2011, 22:22
Не может такого быть, у меня все работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::AddRows(){
TEdit *mashEdit1=new TEdit(Form1->ScrollBox1);
     mashEdit1->Parent=Form1->ScrollBox1;
 
     mashEdit1->Width=42;
    mashEdit1->Text="8988";
}
 
 
void __fastcall TForm1::ScrollBox1Click(TObject *Sender)
{
AddRows();
}
//---------------------------------------------------------------------------
В заголовочном файле
C++
1
void __fastcall AddRows();
0
1 / 1 / 1
Регистрация: 18.07.2011
Сообщений: 90
20.08.2011, 23:15  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void AddRows(TEdit *mashEdit1);
// в заголовочном файле в секции public.
// или
void AddRows();
TEdit *mashEdit1;
//  и дальше, как у вас было
// 2. В файле .cpp -
void AddRows(TEdit *mashEdit1){
  mashEdit1=new TEdit(Form1->ScrollBox1); 
  mashEdit1->Parent=Form1->ScrollBox1;
  mashEdit1->Width=42;
     .............................
}
// 3. В нужном месте - произвожу вызов ф-ции:
AddRows(mashEdit1);
// Когда в программе обращаюсь к членам ф-ции типа: mashEdit1->Text
Абсолютно не меняет появленные впервые ошибки. Только теперь компилятор останавливается раньше - на вызове ф-ции AddRows(). (Раньше он её успешно проходил и останавливался на обращении к mashEdit за пределами функции)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
21.08.2011, 00:20
компилятор - в топку

Добавлено через 28 минут
void AddRows(TEdit *mashEdit1);
// в заголовочном файле в секции public.
вынесите за пределы класса формы.
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
21.08.2011, 00:29
Лучше проект сюда сразу, а то так непонятно, что у вас там
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
21.08.2011, 00:49
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// в .h
private:    // User declarations
  void TForm1::AddRows(TEdit *mashEdit1,TScrollBox *ScrollBox1);
  TEdit *mashEdit1;
// в .срр
void TForm1::AddRows(TEdit *mashEdit1,TScrollBox *ScrollBox1)
{
  mashEdit1=new TEdit(Form1->ScrollBox1);
  mashEdit1->Parent=Form1->ScrollBox1;
  mashEdit1->Top = 10;
  mashEdit1->Left = 10;
  mashEdit1->Width = 100;
 mashEdit1->Text = "сделано";
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AddRows(mashEdit1,ScrollBox1);
}
Миниатюры
Повторное использование кода  
1
1 / 1 / 1
Регистрация: 18.07.2011
Сообщений: 90
22.08.2011, 00:39  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// в .h
private:    // User declarations
  void TForm1::AddRows(TEdit *mashEdit1,TScrollBox *ScrollBox1);
  TEdit *mashEdit1;
// в .срр
void TForm1::AddRows(TEdit *mashEdit1,TScrollBox *ScrollBox1)
{
  mashEdit1=new TEdit(Form1->ScrollBox1);
  mashEdit1->Parent=Form1->ScrollBox1;
  mashEdit1->Top = 10;
  mashEdit1->Left = 10;
  mashEdit1->Width = 100;
 mashEdit1->Text = "сделано";
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AddRows(mashEdit1,ScrollBox1);
}
Мне нужно обратиться к mashEdit->Text за пределами самой функции, например - как в Вашем примере -
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AddRows(mashEdit1,ScrollBox1);
mashEdit1->Text='Hallo, World!'; // вот на это компилятор матерится - типа undefined symbol mashEdit1.
}[/CPP][/QUOTE]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.08.2011, 00:39
Помогаю со студенческими работами здесь

Повторное использование кода
Предположим для класса перегружен oператор+ который принимает либо строку в стиле С, или такой же объект. myString...

Повторное использование кода
Доброго времени суток. Подскажите, пожалуйста, как повторно использовать вот такой код? То есть есть две кнопки, нажимая то на одну, то на...

Повторное использование кода в C++
Всем доброго дня! Прошу помочь начинающему. В данный момент обучаюсь по книге Прата С.. Застрял на задаче про использование класса...

Повторное использование исходного кода в C#
есть желание собрать в одном solution несколько (два для начала) projects с разными целевыми платформами. т.е. только исходный код общий...

Инициализация класса и повторное использование кода
Всем привет! Вопрос в следующем. Есть 2 класса. В одном из них я 2 раза инициализирую объект класса и задаю в конструкторе свойства для...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK сделайте это, JDK, то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Перейдите по ссылке:. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru