![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| AnomaliA |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 24.9.2009 Репутация: нет Всего: нет |
У меня тут вот какая проблема. Есть компонент для работы с ком портом в котором есть класс, читающий поток
Когда этот компонент работает с приложением, то всё нормально, а когда я его добавляю в библиотеку то не вызывается метод Execute, который читает ответы COM Порта. Почему такое может быть? Конструктор класса вызывается.
|
||||
|
|||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
при добавлении сообщения есть очень полезная кнопочка "Код", которая упрощает чтение кода.
По сабжу - где в библиотеке вызывается конструктор потока? То есть - 1. отдельная функция для его создания 2. при инициализации библиотеки 3. etc... Если п.2 - то срочно переделать в п.1 и будет счастье. Сам не так давно напоролся на эти грабли. Это сообщение отредактировал(а) kami - 24.9.2009, 17:29 |
|||
|
||||
| AnomaliA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 24.9.2009 Репутация: нет Всего: нет |
Я не гуру в этом деле, поэтому если можно немного попроще
Как и где его нужно объявлять? У меня было так, сам компонент я добавил на форму, которая была отдельным Юнитом, а форму создавал в теле библиотеки
|
|||
|
||||
| kami |
|
||||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
Мало информации. Где конкретно в теле библиотеки находится эта строка кода? Я имею ввиду что-то типа (далее - курсивом то, как примерно должна была подаваться информация): эта строка находится в процедуре:
Эта процедура вызывается здесь, в коде инициализации длл
Если код так и выглядит, то срочно переделать на что-нибудь эдакое:
И уже из основной программы после подключения библиотеки вызывать процедуру в dll т.е.: (код основной программы)
|
||||||||
|
|||||||||
| AnomaliA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 24.9.2009 Репутация: нет Всего: нет |
К сожелению это не сработало ((( Хотя может и я нетак выразился, вообщем вот примерно код компонента
В нем все функции которые работают когда подгружаешь форму с помошью Create, Но вот процедура TReadThread.Execute нехочет принимать ответ от СОМ порта. В приложениях она выполняется, а вот в библиотеке почему-то нет ((( с чем это может быть связанно? Это сообщение отредактировал(а) AnomaliA - 25.9.2009, 15:42 |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
код компонента здесь АБСОЛЮТНО ни при чем.
еще раз прочитай предыдущие сообщения - где я там говорил, что что-то криво с компонентом? минимальный код dll в студию.
Потому что в dllMain при DLL_process_attach создание потоков невозможно. А у тебя, судя по всему, именно в ней и вызывается конструктор компонента. Добавлено через 11 минут и 55 секунд Что я просил показать из кода. Это сообщение отредактировал(а) kami - 25.9.2009, 12:23 |
|||
|
||||
| AnomaliA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 24.9.2009 Репутация: нет Всего: нет |
Нашёл в чем ошибка, но от этого не легче. Всё упирается в метод Synchronize второго потока, который ждет ответа от ком порта, и насколько я почитал в интернете это нерешаемо.
|
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
синхронизация двух дополнительных потоков делается не через Synchronize. И это решаемо. P.S.так как ты отказываешься отвечать на мои вопросы, давать дополнительную информацию, необходимую для решения проблемы, покидаю эту тему. |
|||
|
||||
| AnomaliA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 24.9.2009 Репутация: нет Всего: нет |
kami, прости если что не так, просто я действительно нашел в чем там проблема, и всё что я писал касаемо метода Create тут оказалось непричем. А насколько я почитал касаемо Synchronize в DLL выхода нигде не нашёл, но если что подскажешь буду благодарен
|
|||
|
||||
| СЭНСЭЙ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
:()
Это сообщение отредактировал(а) СЭНСЭЙ - 2.10.2009, 19:39 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |