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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2012, 05:51   #1
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию Передача параметра в функцию DLL

Дано:
- Форма. На ней Edit1. Там, скажем, текст "ололо".
- DLL с функцией.

Описание:

В DLL есть функция с 2-мя параметрами. Вызывается так
Код:
Say("Hello",5);
Как сделать так, чтобы значение 1го параметра можно было получить с формы из Edit1?

И еще. Как можно сделать, чтобы в DLL определенный участок кода исполнялся бесконечно с заданным интервалом времени?
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 25.08.2012, 06:19   #2
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

1. Версия дельфи какая? Функция использует stdcall?
2. Если помимо это необходимо делать ещё что-то - то потоками или загрузкой второй DLL c циклом while(True) cо слипом.
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}

Последний раз редактировалось Johnson; 25.08.2012 в 06:23.
Johnson вне форума Ответить с цитированием
Старый 25.08.2012, 10:56   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как сделать так, чтобы значение 1го параметра можно было получить с формы из Edit1?
Код:
Say(Form1.Edit1.Text,5);
Естесственно что в модуле формы функция длл должна быть указана статическим подключением через external например.
Цитата:
или загрузкой второй DLL c циклом while(True) cо слипом.
А лучше потоком в ДЛЛ с нужным sleep().
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.08.2012, 13:01   #4
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А лучше потоком в ДЛЛ с нужным sleep().
Вставлю свои 5 копеек т. к. довелось мне реализовывать монстрообразную систему с потоками и конвейером внутри DLL
Sleep очень уж нестабилен и неудобен т. к. он скорее надстройка глючная.... заводим event на предмет терминации DLL, а в цикле потока пишем что-то типа:
Код:
while WaitForSingleObject(TerminateEvent, TimeForSleep) = WAIT_TIMEOUT do
  SomeWork();
Как минимум, удобно! и точность, вроде бы, выше (у sleep шаг 15мс т. е. sleep(1..14) = 15мс в большинстве случаев)
GreenWizard вне форума Ответить с цитированием
Старый 25.08.2012, 13:16   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и точность, вроде бы, выше
Ну если допуск точности большой то можно и не заморачиваться особо
в общем решать автору.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.08.2012, 20:37   #6
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

GreenWizard, а поподробнее можно? Не приходилось с эвентами сталкиваться.


Кстати. А нормальным ли будет передача такста в таком виде? Не лучше ли будет явно привести строку к нужному виду?

Автору: библиотека самописная, экспортируемая функция как декларируется?

(Просто не сишная ли она со stdcall, тогда придется к PChar/PWideChar приводить явно).
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}

Последний раз редактировалось Johnson; 25.08.2012 в 20:40.
Johnson вне форума Ответить с цитированием
Старый 25.08.2012, 21:08   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
к нужному виду?
Эт какому, стесняюсь спросить?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.08.2012, 21:16   #8
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Ну, хотя бы к String. Как вариант, к PAnsiString/PWideString.
Желательно, к любому сишному виду.
Почитатйте в блоге уважаемого GunSmokera про это.

Хотя бы вот тут: http://www.gunsmoker.ru/2008/09/2.html
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 25.08.2012, 21:22   #9
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Цитата:
Сообщение от Johnson Посмотреть сообщение
1. Версия дельфи какая? Функция использует stdcall?
Delphi 2010.

Нет, сама функция находится в другом приложении. В DLL осуществляется лишь подстановка параметров и вызов функции.
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 25.08.2012, 21:25   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А типы параметров функции какие?
А то ведь действительно кастовать придется...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача параметра маГГ85 PHP 4 18.01.2012 11:35
Передача хранимой процедуры в качестве параметра в функцию xabik БД в Delphi 5 04.08.2011 11:08
Delphi Fortran DLL передача процедуры в качестве параметра gimlis Помощь студентам 1 23.03.2011 22:52
Передача параметра с MDI родителя в MDI child через DLL ByXalkin Общие вопросы Delphi 0 15.12.2009 17:21
Передача компонента как параметра в функцию hayhay Microsoft Office Excel 1 11.03.2008 15:53