С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477

Ошибки при клонировании формы.

10.04.2012, 14:29. Показов 1391. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ситуация: есть форма(Form1), которая делает определенные действия, сама по себе эта форма работает. Если я делаю другую форму, в ней располагаю 4 чекБокса, вверху делаю инклюд нашей Form1 и пишу
C++
1
2
3
4
             Form1^ gdif = gcnew Form1;
             gdif->Name="Can0";
             gdif->Show();
             }
и так на все 4 чекбокса с разными значениями Name, то при компиляции получаю
ошибки
1>------ Построение начато: проект: VihDef, Конфигурация: Debug Win32 ------
1>Компиляция...
1>VihDef.cpp
1>d:\vc\1\vihdef\vihdef\Form1.h(664) : warning C4101: oscill_dat: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(660) : warning C4101: bf: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(667) : warning C4101: oscill_dat_3: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(661) : warning C4101: num: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(666) : warning C4101: oscill_dat_2: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(665) : warning C4101: oscill_dat_1: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(663) : warning C4101: insp_time: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(662) : warning C4101: soc_insp: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(687) : warning C4101: num: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(689) : warning C4101: insp_time: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(688) : warning C4101: soc_insp: неиспользованная локальная переменная
1>main_menu.cpp
1>d:\vc\1\vihdef\vihdef\Form1.h(664) : warning C4101: oscill_dat: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(660) : warning C4101: bf: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(667) : warning C4101: oscill_dat_3: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(661) : warning C4101: num: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(666) : warning C4101: oscill_dat_2: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(665) : warning C4101: oscill_dat_1: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(663) : warning C4101: insp_time: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(662) : warning C4101: soc_insp: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(687) : warning C4101: num: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(689) : warning C4101: insp_time: неиспользованная локальная переменная
1>d:\vc\1\vihdef\vihdef\Form1.h(688) : warning C4101: soc_insp: неиспользованная локальная переменная
1>Создание кода...
1>Компоновка...
1>VihDef.obj : error LNK2005: "unsigned int m_sock" (?m_sock@@$$Q3IA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "struct _iobuf * geclog" (?geclog@@$$Q3PAU_iobuf@@A) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "double x_med" (?x_med@@$$Q3NA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "double y_med" (?y_med@@$$Q3NA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "double x_med_1" (?x_med_1@@$$Q3NA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "double y_med_1" (?y_med_1@@$$Q3NA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "double x_med_2" (?x_med_2@@$$Q3NA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "double y_med_2" (?y_med_2@@$$Q3NA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "double x_med_3" (?x_med_3@@$$Q3NA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "double y_med_3" (?y_med_3@@$$Q3NA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int VihDef::click" (?click@VihDef@@$$Q3HA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "void __clrcall write_log(char *,char *,int)" (?write_log@@$$FYMXPAD0H@Z) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int __clrcall init_program(void)" (?init_program@@$$FYMHXZ) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int __clrcall close_program(void)" (?close_program@@$$FYMHXZ) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int __clrcall init_instrument(void)" (?init_instrument@@$$FYMHXZ) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int __clrcall set_frequency(double,int,int)" (?set_frequency@@$$FYMHNHH@Z) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int __clrcall set_compensator(int,int,int)" (?set_compensator@@$$FYMHHHH@Z) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int __clrcall set_amp(int,int,int)" (?set_amp@@$$FYMHHHH@Z) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int __clrcall get_compensator_phase(void)" (?get_compensator_phase@@$$FYMHXZ) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int __clrcall get_generator_phase(void)" (?get_generator_phase@@$$FYMHXZ) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int __clrcall get_compensator_amp(void)" (?get_compensator_amp@@$$FYMHXZ) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int __clrcall get_generator_amp(void)" (?get_generator_amp@@$$FYMHXZ) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int __clrcall get_amp1(void)" (?get_amp1@@$$FYMHXZ) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int __clrcall set_generator(int,int,int)" (?set_generator@@$$FYMHHHH@Z) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int __clrcall comp_measur(void)" (?comp_measur@@$$FYMHXZ) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int __clrcall autoset(void)" (?autoset@@$$FYMHXZ) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int __clrcall lift_off_comp_begin(void)" (?lift_off_comp_begin@@$$FYMHXZ) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int __clrcall lift_off_comp_end(void)" (?lift_off_comp_end@@$$FYMHXZ) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int __clrcall balance(int)" (?balance@@$$FYMHH@Z) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "double * gdb" (?gdb@@$$Q3PANA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "double can::lift_off_y_med" (?lift_off_y_med@can@@$$Q3NA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "double can::lift_off_x_med" (?lift_off_x_med@can@@$$Q3NA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "double can::measur_comp_phase" (?measur_comp_phase@can@@$$Q3NA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "double can::measur_comp_amp" (?measur_comp_amp@can@@$$Q3NA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int can::nb_att" (?nb_att@can@@$$Q3HA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int can::diff_gain" (?diff_gain@can@@$$Q3HA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int can::compensator_amp" (?compensator_amp@can@@$$Q3HA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int can::compensator_phase" (?compensator_phase@can@@$$Q3HA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int can::generator_amp" (?generator_amp@can@@$$Q3HA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "int can::generator_phase" (?generator_phase@can@@$$Q3HA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "double rad_grad" (?rad_grad@@$$Q3NA) уже определен в main_menu.obj
1>VihDef.obj : error LNK2005: "double twopi" (?twopi@@$$Q3NA) уже определен в main_menu.obj
1>D:\VC\1\VihDef\Debug\VihDef.exe : fatal error LNK1169: обнаружен многократно определенный символ - один или более
1>Журнал построения был сохранен в "file://d:\VC\1\VihDef\VihDef\Debug\BuildLog.htm "
1>VihDef - ошибок 43, предупреждений 22
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Из инклюдов только Form1 и инклюжу
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.04.2012, 14:29
Ответы с готовыми решениями:

Как избавиться от повторов при клонировании экземпляров формы?
Всем здравствуйте. Есть главная форма со стандартным меню из трёх элементов и форма, которую нужно клонировать. При щелчке на...

Удаление повторяющегося option при клонировании
Есть список услуг в выпадающем списке, когда человек выбирает услугу, то появляется ниже такой же блок и вот надо чтоб он выводился но...

Трудности при глубоком клонировании объекта
Здравствуйте. Есть объект. Нужно создать его полную копию. Примерно понимаю как это сделать, но внутри объекта есть вложенный List из...

12
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
20.04.2012, 10:29  [ТС]
Господа, а как клонировать форму 4 раза, так чтоб каждая форма была уникальна?
Имею 2 формы:
1 форма: 4 кнопки
1 кнопка:
C++
1
2
3
             Def^ gdif1 = gcnew Def;
             gdif1->Name="Can0";
             gdif1->Show();
2 кнопка:
C++
1
2
3
             Def^ gdif1 = gcnew Def;
             gdif1->Name="Can1";
             gdif1->Show();
3 кнопка:
C++
1
2
3
             Def^ gdif1 = gcnew Def;
             gdif1->Name="Can2";
             gdif1->Show();
4 кнопка:
C++
1
2
3
             Def^ gdif1 = gcnew Def;
             gdif1->Name="Can3";
             gdif1->Show();
2 форма
на загрузку формы написано
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
            if(this->Name=="Can0") {
                Canal=0;
                this->Text="Defectoscope channel 1";
            }
            if(this->Name=="Can1") {
                Canal=1;
                this->Text="Defectoscope channel 2";
            }
            if(this->Name=="Can2") {
                Canal=2;
                this->Text="Defectoscope channel 3";
            }
            if(this->Name=="Can3") {
                Canal=3;
                this->Text="Defectoscope channel 4";
            }
Если запущу все 4 формы по четырем кнопкам, то все 4 формы будут работать одинаково и у всех будет одинаковая переменная Canal(последней вызванной формы)

gdif1 пытался менять для разных форм(ну на всякий случай)
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
21.04.2012, 16:49
Вариантов много. Вот не лучший но простой в изложении. На клонируемой форме резмещаете 4 панели не видимые по умолчанию. На каждой по четыре кнопки. Конструктор переписываете или перегружаете, одним параметром:
C++
1
2
3
4
Form1(int variantForm1){...............}
В теле конструктора объявляете:
static int myVar=variantForm1;
}
добавляете событие
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Form1_Load(................){
Switch(myVar){
case 1: {
this->panel1->Visible=true;
//здесь можно удалить ненужное
}
case 2: {
this->panel2->Visible=true;
//
}
case 3: {
this->panel3->Visible=true;
//
}
case 4: {
this->panel4->Visible=true;
//
}
}
}
Ну и обрабатывайте и оформляйте кнопки как хотите.
Можно удалить ненужные кнопки и события в Load.
В случае перегрузки т.е. добавления конструктора преобразования можно все решить на стадии инициализации.
0
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
21.04.2012, 17:19  [ТС]
не совсем понял... зачем мне 4 одинаковые скрытые панели? и одна справляется, только у меня объявлена глобальная переменная формы(вернее - фиг знает, формы или проекта ) и эта переменная меняется сразу для всех форм, к сожалению, а мне нужно, чтоб она менялась только для одной формы, я подозреваю - что мне надо эту переменную не там объявлять вот если я её буду на форме объявлять через privat? пойдет?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
21.04.2012, 18:08
Цитата Сообщение от KokosSPb Посмотреть сообщение
не совсем понял... зачем мне 4 одинаковые скрытые панели?
Золотые слова! Конечно изначально постановка странная. Лучше для каждой формы добавить в свой проект отдельную форму а переменные устанавливать из формы стартующей первой, если нужно.
Приведенный пример - так, инфа к размышлению. Там ведь еще в точке входа (Main()) нужно, как-то:
C++
1
2
int hru=0;
Application::Run(Form1(hru));//тут генерится безымянный экземпляр класса Form1 наследующего от  Form1
и инклудить - боже упаси!
Иначе не заработает, да и устанавливать размеры и координаты в Load, - мутота!
Совет: Делайте отдельные формы.
Вот тут посмотрите, это для C#, но по сути подойдёт:
Ответы на 7 самых частых вопросов по WinForms

Добавлено через 15 минут
Цитата Сообщение от KokosSPb Посмотреть сообщение
Ситуация: есть форма(Form1), которая делает определенные действия, сама по себе эта форма работает. Если я делаю другую форму, в ней располагаю 4 чекБокса, вверху делаю инклюд нашей Form1 и пишу
Фу, дьявол - перечитал и понял: Вы хотите из формы созданной в стартовой форме создать много экземпляров стартовой формы?
Тогда вопрос: скажите, а в каком случае без этого нельзя обойтись?
1
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
21.04.2012, 18:12  [ТС]
Цитата Сообщение от IGPIGP Посмотреть сообщение
скажите, а в каком случае без этого нельзя обойтись?
у меня есть железка, которая принимает данные по 4ем каналам, все четыре канала получают информацию одновременно, в одном пакете, отображение этих данных производится в абсолютно одинаковых формах, создавать 4 формы - не вижу смысла, проще создать форму, потом клонировать её и изменять переменную внутри формы, взял основную за шаблон, а от значения данной переменной и будет зависеть - какой канал она отображает
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
21.04.2012, 18:27
Цитата Сообщение от KokosSPb Посмотреть сообщение
потом клонировать её и изменять переменную внутри формы
Тогда первый совет с последующими уточнениями подходит. Но это не проще чем из стартовой формы запустить 4 других - моё мнение.
0
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
21.04.2012, 19:24  [ТС]
а почему мой вариант не подходит? может проще переобъявить переменную по другому?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
21.04.2012, 19:47
Цитата Сообщение от KokosSPb Посмотреть сообщение
у меня есть железка, которая принимает данные по 4ем каналам
если это не разделяемый ресурс т.е. заботиться о доступе не нужно, то и в этом случае получать инфу стоит в стартовой форме хоть и в одном потоке, а отображать (или обновлять), если хотите, в окошках из неё запущенных (в ней созданных). Но как знаете. Спорить не люблю, да и информации нет. Обдумайте архитектуру и... всё таки:
Ответы на 7 самых частых вопросов по WinForms
0
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
21.04.2012, 20:02  [ТС]
Да, я и получаю инфу в стартовой форме а потом отображаю их в разных формах, в зависимости от "канала", но вот запуская новый "клон" формы, канал меняется сразу для всех запущенных форм
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
21.04.2012, 20:11
Цитата Сообщение от IGPIGP Посмотреть сообщение
int hru=0;
Application::Run(Form1(hru));
Вот это Вы прочли? И там ещё пояснение? Ваша стартовая форма не знает как её зовут. И так как показано в цитате сделать то можно, но нужно ли?
Создайте в стартовой форме другие экземпляры другой формы (если не хотите 4 разных), но напишите её конструктор как конструктор преобразования с принимаемым параметром/параметрами. Передайте каждому экземпляру свои переменные, вплоть до имени.
Присвойте их, при инициализации или позже (в Load удобно). Если это не понятно - читайте.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
23.04.2012, 19:43
Цитата Сообщение от KokosSPb Посмотреть сообщение
то при компиляции получаю ошибки
Что-то Вы задумались. Ошибки то из-за "клонирования" - самодельного термина, в реализации означающего рекурсивные объявления. Вы же в файл, его же и пытаетесь вставить. И компилятор о том же. Нельзя многократно объявлять одно и тоже.
1
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
25.04.2012, 23:30  [ТС]
я уже решил эту проблему своим "дурацким" способом может попозже объясню, но смысл остался тот-же, теперь другая беда, но это тема другого топика
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.04.2012, 23:30
Помогаю со студенческими работами здесь

Увеличение объема при клонировании диска
Клонировал ssd, с помощью Macrium. После этого нормально загрузился с него и с помощью управления дисками, расширил его на размер...

Mercurial, ошибка при клонировании по ssh
при клонировании репозитория hg clone ssh://dev2@144.76.101.100:14622//serv/hg/rp_dev ./ вот такая ошибка: ssh не является внутренней или...

Возможно ли добавить класс при клонировании элемента?
Собственно вопрос в теме. Использую метод .clone()

Странное поведение при клонировании и изменении экземпляров префабов
Доброго времени суток. создаю префаб простым перетаскиванием в проект с окна иерархии. потом создаю дубликат префаба ,изменяю его имя и...

Что значит связная копия при клонировании в VirtualBox?
Я читал эту тему (вернее фак по ссылке): Русскоязычная документация по VirtualBox версии 4 но там про связную копию ничего нету. ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru