|
365 / 348 / 74
Регистрация: 18.03.2015
Сообщений: 1,293
|
||||||
Как перенести код Unit1 в Unit2?15.11.2015, 16:04. Показов 2925. Ответов 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 параметрами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса
Калибровка параметров симбиотической модели: технический обзор
Содержание:
Введение
Постановка проблемы
Технические аспекты реализации
Процесс внедрения изменений
|
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0»
https:/ / ibb. co/ NnkGpfMd
Представленная интегрированная схема описывает непрерывную нелинейную. . .
|
|
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы
### Аннотация
Представлено исследование по разработке агентной модели микоризной. . .
|
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики
Контекст
Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
|
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии
Введение
Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
|
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np
class PlantAgent:
def __init__(self, name, strategy, initial_biomass):
self. name = name
self. strategy = strategy # "greedy" (широколиственные) или. . .
|