|
|
|
Как по имени или указателю вызвать метод экземпляра класса ?
|
|||
|---|---|---|---|
|
#18+
Добрый день. Вопрос возможно глупый, но все же. Создается экземпляр класса для работы с COM-портом (используется CPort). Для его события OnRxChar создается обработчик события, как процедура, относящаяся к пользовательскому классу, пользовательский класс также создается по одному на каждый открываемый COM-порт. Это нужно, что бы данные, приходящие от заранее не известного числа портов обрабатывались независимо. Но как послать данные в нужный порт? При создании экземпляра CPort (TComPort) ему назначается индивидуальное Name, да и указатель, мы же получаем, как результат в конце концов. Подскажите, как можно выполнить, например, метод WriteStr() для нужного экземпляра TComPort ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2020, 00:26 |
|
||
|
Как по имени или указателю вызвать метод экземпляра класса ?
|
|||
|---|---|---|---|
|
#18+
Это нужно, что бы данные, приходящие от заранее не известного числа портов обрабатывались независимо. Достаточно одного обработчика в одном классе. А разделять источники события по параметру Sender. Через него передается ссылка на экземпляр класса, который в данный момент вызвал обработчик. Но как послать данные в нужный порт? Если посылка данных является ответом на входящий блок данных, то через тот же Sender. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2020, 02:44 |
|
||
|
Как по имени или указателю вызвать метод экземпляра класса ?
|
|||
|---|---|---|---|
|
#18+
AleksVoronezh пользовательский класс также создается по одному на каждый открываемый COM-порт. Это нужно, что бы данные, приходящие от заранее не известного числа портов обрабатывались независимо. Храните ссылку на нужный порт в пользовательском классе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2020, 07:35 |
|
||
|
Как по имени или указателю вызвать метод экземпляра класса ?
|
|||
|---|---|---|---|
|
#18+
AleksVoronezh Но как послать данные в нужный порт? Можно создать список портов с их экземплярами TComPort; "com1" - TComPort1, "com2" - TComPort2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2020, 08:34 |
|
||
|
Как по имени или указателю вызвать метод экземпляра класса ?
|
|||
|---|---|---|---|
|
#18+
Спасибо всем ответившим. На всякий случай, я с самого начала веду массив записей, в элементы которого помещаю имя создаваемого порта и его указатель. Проблема именно в том, что бы обратится к методу нужного экземпляра класса, обслуживающего тот или иной порт. Число портов во врямя работы меняться не будет. Некоторое число портов будет задаваться только во время старта программы. Посылка данных может никак не зависить от ответа. Ответа может вообще не быть, если это включение лампочки например. Вот поэтому и хоелось бы сделать полностью независимыми прием данных (это работает, данные далее попадают в Pascal Script, и обрабатываются от каждого порта своей функцией) и оправку данных в нужный "канал" по необходимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2020, 09:29 |
|
||
|
Как по имени или указателю вызвать метод экземпляра класса ?
|
|||
|---|---|---|---|
|
#18+
Вот для теста сделал - кое как работает. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Здесь проверка отправки, поиск в цикле нужного экземпляра опускаю. Код: pascal 1. 2. 3. Все эти экземпляры - TComPort и мой класс по умолчанию наверняка работает в одном потоке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2020, 10:32 |
|
||
|
Как по имени или указателю вызвать метод экземпляра класса ?
|
|||
|---|---|---|---|
|
#18+
AleksVoronezh Проблема именно в том, что бы обратится к методу нужного экземпляра класса, обслуживающего тот или иной порт. Перебрать список в поиске нужно порта, тут его экземпляр AleksVoronezh Код: pascal 1. Хотя, я бы взял TList или TObjectList. AleksVoronezh мой класс по умолчанию наверняка работает в одном потоке? На сколько помню, читает и ожидает в отдельном потоке, остальное - в основном. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2020, 16:34 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39967690&tid=2038234]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
198ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 486ms |

| 0 / 0 |
