Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2013, 14:47   #11
Smallboy
Пользователь
 
Регистрация: 16.07.2013
Сообщений: 28
По умолчанию

подскажите можно ли из потока вызвать функцию(из длл).
Функция описана так в TForm:
и как это правильно сделать.

private
SetComParams : function(Num: Byte; Rate: DWord): Byte; stdcall;
Smallboy вне форума Ответить с цитированием
Старый 21.10.2013, 15:00   #12
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Никто не мешает вызвать из потока, даже нужно, именно это который пост вам и толкуют.

Так что за DLL? Возможно внимательное чтение доков даст наличие асинхронного вызова без ожидания?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 21.10.2013, 15:23   #13
Smallboy
Пользователь
 
Регистрация: 16.07.2013
Сообщений: 28
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
Никто не мешает вызвать из потока, даже нужно, именно это который пост вам и толкуют.

Так что за DLL? Возможно внимательное чтение доков даст наличие асинхронного вызова без ожидания?
К сожалению к данной ДЛЛ доки распространяются только с пометкой
(конфиденциально) и подпиской договора о неразглашении. Подробное чтение документации не дает информации об асинхронной работе. Да и принципе это наверное и не нужно, т.к. дальнейшая работа программы основывается на ответе полученном от функции, который надо обязательно ждать.

А модуль по прослушиванию порта к данной ДЛЛ не имеет отношения.
Это как один из способов обработки запросов для скармливания данной Длл.

В идеале все это можно рассматривать как 2 подпрограммы обменивающиеся информацией друг с другом:
- первая регистрирует запросы и первый зарегистрированный передает второй подпрограмме. Причем продолжает работать во время обработки запроса запроса 2-й подпрограммой. И всем остальным в это время шлет ответ о занятости устройства.

- 2-я обрабатывает запрос и возвращает ответ первой(успешно или нет)

Причем 2-я не может обрабатывать более 1-го запроса.

P.S.

т.е. вызывать функцию описанную в TForm вот так просто?:

TForm1.SetComParams(xxx) в разделе Execute
Smallboy вне форума Ответить с цитированием
Старый 21.10.2013, 18:30   #14
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

не приучайся к этому! TForm1.SetComParams(xxx) в разделе Execute
кто мешает вытащить за пределы формы?
Код:
function SetComParams(Num: Byte; Rate: DWord): Byte; stdcall;external 'dllname.dll' name 'SetComParams';

{ TWorkThread }
procedure TWorkThread.Execute;
var
  Num,res: Byte;
  Rate: DWord;
begin
  while not Terminated do
  begin
    res:=SetComParams(Num,Rate);
  end;
end;
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 22.10.2013, 10:26   #15
Smallboy
Пользователь
 
Регистрация: 16.07.2013
Сообщений: 28
По умолчанию

всем спасибо за помощь!
Smallboy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана квадратная матрица А порядка М. Найти сумму элементов каждой её диагонали, параллельной побочной(начиная с одноэлементной диа Richik123 Паскаль, Turbo Pascal, PascalABC.NET 1 31.05.2012 16:15
TCP/IP параллельной обработки запросов zhenya.ya C/C++ Сетевое программирование 0 24.04.2011 21:31
Проблема с параллельной работой клиентов IceExecutioner SQL, базы данных 6 17.11.2010 16:49
Реализация работы с пикселями: ritm Общие вопросы Delphi 15 12.01.2009 16:59