|
365 / 348 / 74
Регистрация: 18.03.2015
Сообщений: 1,293
|
||||||
Как перенести код Unit1 в Unit2?15.11.2015, 16:04. Показов 3027. Ответов 33
Метки нет (Все метки)
Здравствуйте господа профессионалы!
Написал на Builder 6 программу для общения чрез COM порт. Все работает. Теперь, чтобы навести порядок и дальше не запутаться, некоторые функции нужно из Unit1 перенести в другой Unit. На форме есть Button: «открыть порт» и «закрыть порт». Есть ComboBox «Выбрать номер порта». Читал Архангельского. Читал на форуме похожие темы. Ничего не получается. Подскажите, пожалуйста, чайнику: 1- как оставив Button и ComboBox в первой форме перенести функции их обработки в Unit2? 2- Возможно ли ф-ю «void __fastcall TForm1::ComboBox1Change(TObject *Sender) //Выбрать номер порта» написать «красивее»? 3- Почему порты COM1 – COM9 открываются, а выше COM10 – нет? Unit1.cpp
0
|
||||||
| 15.11.2015, 16:04 | |
|
Ответы с готовыми решениями:
33
Не компилируется программа при попытке вызова функции из Unit1 в Unit2 Перенести функции и процедуры в Unit2, и подключить к Unit1
|
|
365 / 348 / 74
Регистрация: 18.03.2015
Сообщений: 1,293
|
|
| 17.11.2015, 15:21 [ТС] | |
|
0
|
|
|
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
|
|||||||
| 18.11.2015, 00:03 | |||||||
|
Положить его надо в папку со всеми юнитами. #include "Pot1. txt" писать не в шапке, а среди кода, как-нибудь так
Лучше, конечно, делать *.cpp, так легче его редактировать прямо из билдера.
0
|
|||||||
|
1709 / 905 / 207
Регистрация: 25.11.2009
Сообщений: 1,858
|
||
| 18.11.2015, 09:09 | ||
|
И переносить обработчик событий в другой файл, конечно, можно, но на мой взгляд правильнее перенести код, обёрнутый в отдельную функцию, и просто вызывать её из обработчика. Тогда не возникнет путаницы.
0
|
||
|
365 / 348 / 74
Регистрация: 18.03.2015
Сообщений: 1,293
|
||||||||||||||||
| 18.11.2015, 14:48 [ТС] | ||||||||||||||||
|
Собрал рабочий проект в один Unit1.cpp. Работает.
Создал Unit2 и сохранил как PORT. По Вашим рекомендациям перенес в PORT две ф-ии. Unit1.cpp
Получил следующее: [C++ Error] PORT.h(6): E2147 'AnsiString' cannot start a parameter declaration [C++ Error] PORT.h(6): E2303 Type name expected [C++ Error] PORT.h(7): E2147 'HANDLE' cannot start a parameter declaration [C++ Error] PORT.cpp(17): E2147 'AnsiString' cannot start a parameter declaration [C++ Error] PORT.cpp(17): E2303 Type name expected
0
|
||||||||||||||||
|
1709 / 905 / 207
Регистрация: 25.11.2009
Сообщений: 1,858
|
|||||||
| 18.11.2015, 14:57 | |||||||
1
|
|||||||
|
365 / 348 / 74
Регистрация: 18.03.2015
Сообщений: 1,293
|
|
| 18.11.2015, 15:58 [ТС] | |
|
Спасибо. Заработало. Но начало ругаться на
Label11->Caption=StringReplace(pcComPort,"\\\\." ,"",TReplaceFlags()); Button1->Enabled = false; // выключить Button2->Enabled = true; // включить Button3->Enabled = true; // включить в Unit2.cpp
0
|
|
|
1709 / 905 / 207
Регистрация: 25.11.2009
Сообщений: 1,858
|
||||||||||||||||
| 18.11.2015, 16:17 | ||||||||||||||||
|
А откуда в Unit2.cpp появились Label11 и Button`ы?
Зря ты их впихнул в функцию ClosePort. Лучше оставь это в первом юните
1
|
||||||||||||||||
|
365 / 348 / 74
Регистрация: 18.03.2015
Сообщений: 1,293
|
||||||
| 19.11.2015, 13:10 [ТС] | ||||||
|
Спасибо. Заработало!
Возникли еще вопросы: В функции поставил проверку «открыт ли порт». if(hCom == 0) ShowMessage("Сначала надо открыть порт."); else{…….} При запуске программы – работает. Если порт НЕ открыт – выводит сообщение "Сначала надо открыть порт." Если порт открыт – начинается работа с Ардуино. Но если закрыть порт, ничего не происходит. Ни сообщения, ни работы. Если потом заново открыть порт, то работает. Когда не было проверки, то программа, при НЕ открытом порте, просто зависала. Как ПРАВИЛЬНО проверить, открыт ли порт?
Почему НЕ открывается COM10 и выше? При подключении Ардуино, образовался COM. Из среды разработки Ардуино, какой бы это порт не был (COM3 или COM33), работает. Из моей программы работает только до COM9. Из консольной программы, написанной на Dev-C++, тоже не открывается. Я бы не заморачивался. Но при подключении активного USB удлинителя, ставятся какие то драйвера. Ардуино улетает с COM9 на COM13. Никакие переназначения порта из винды не помогают.
0
|
||||||
|
Практикантроп
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
|
||
| 19.11.2015, 13:48 | ||
Может, потребуется перезагрузить систему.
0
|
||
|
365 / 348 / 74
Регистрация: 18.03.2015
Сообщений: 1,293
|
|
| 19.11.2015, 14:12 [ТС] | |
|
В винде порты, которые использовались ранее, отмечены как используемые, даже если устройства нет.
У меня одна Ардуина встала на COM6 две другие на COM9. Подключаю только одну. Но другой порт остается занятым. Если на него переопределить подключенную Ардуино, вылезет сообщение «порт занят», но переподключится и будет работать. Но с USB удлинителем такой номер не проходит даже из среды разработки Ардуино.
0
|
|
|
1709 / 905 / 207
Регистрация: 25.11.2009
Сообщений: 1,858
|
|||||||||||||||||
| 19.11.2015, 16:56 | |||||||||||||||||
На счёт порта с двузначным номером - а ты точно открываешь порт с таким именем
1
|
|||||||||||||||||
|
365 / 348 / 74
Регистрация: 18.03.2015
Сообщений: 1,293
|
|||||||||||
| 21.11.2015, 10:05 [ТС] | |||||||||||
|
Добавил
Двухзначный порт не открывался, кода даже не было ф-ии выбора порта. Тогда
Мистика…
0
|
|||||||||||
|
1409 / 573 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
|
||
| 21.11.2015, 10:17 | ||
|
http://www.vsokovikov.narod.ru... conven.htm
0
|
||
|
365 / 348 / 74
Регистрация: 18.03.2015
Сообщений: 1,293
|
|||||||||||
| 21.11.2015, 10:25 [ТС] | |||||||||||
|
Столкнулся с еще одной непоняткой.
Есть несколько ф-ий передачи настроек и, отдельной кнопкой, ф-я чтения настроек.
Написал так:
0
|
|||||||||||
| 21.11.2015, 10:25 | |
|
Unit1 и Unit2 Применение кода из Unit1 в Unit2
Circular unit reference between Unit2 and Unit1 Вызов процедуры в Unit1 из Unit2 c параметрами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|