Страница 1 из 2

Вызов DLL функции из LinkForm

Добавлено: 11 июл 2003, 10:15
renat
допустим есть потребность вызова сложных матеатических расчетов из DLL функций, причем эту функцию надо вызывать из LinkForm.

Кто нибудь сталкивался с такой проблемой? - вызовом самописных DLL из LinkForm ?

Re: Вызов DLL функции из LinkForm

Добавлено: 11 июл 2003, 11:06
forummaster
<HTML>проблемы как таковой нет - вызов функций из внешних Dll реализуется примерно так:

делается объявление внешних функций ( скажем, в отдельном файле myfunc.inc )

myfunc.inc

...
function myfunc( [paramlist] ) : integer ; external 'myfunc.dll' ;
...

в linkform'е делаем вызов этой функции myfunc с указанными параметрами :

mylink.frm

....
var i:integer ;
i := myfunc( [xxx] ) ;
....

собирается все это вместе примерно так - в файле проекта make.prj пишем :

#make 'myfunc.inc'
#make 'mylink.frm'

сам файл myfunc.dll кладем в EXE каталог галактики. для успешной компиляции формы файл myfunc.dll также нужно поместить в текущий каталог проекта.</HTML>

Re: Вызов DLL функции из LinkForm

Добавлено: 11 июл 2003, 12:46
m0p3e
Дополнение:
function myfunc( [paramlist] ) : integer ; external 'myfunc.dll' ;
Можно писать как:
function myfunc( [paramlist] ) : integer ; external 'C:\MyFunc\myfunc.dll' ;
:)

Re: Вызов DLL функции из LinkForm

Добавлено: 11 июл 2003, 14:51
renat
а как обявить функцию которая не взвращает никаких значений?

или фукнцию которая вообще ничего не передает и не получает?

Re: Вызов DLL функции из LinkForm

Добавлено: 11 июл 2003, 15:49
renat
еще один БАГ (или фича?) :
в DLL имена функций написаны маленькими буквами а Галактика хочет большими - пришлось DLL перекомпилировать тогда вроде бы работает

Re: Вызов DLL функции из LinkForm

Добавлено: 11 июл 2003, 18:49
sth
фича. описанная в документации притом.

Re: Вызов DLL функции из LinkForm

Добавлено: 14 июл 2003, 12:00
renat
опять баг или фича?

- Использую вызов функций DLL из .ARD - все нормально

- Пробую в Linkform - не поимает и говорит ...нет такой функции, поля или метода...

Re: Вызов DLL функции из LinkForm

Добавлено: 15 июл 2003, 13:49
renat
кто знает в чем косяк?
передаю в DLL integer значение (любое)
а внутри DLL принимается как 8 и никак иначе... как будто DLL вообще ничего не получает...

кто сталкивался с аналогичной проблемой?

Re: Вызов DLL функции из LinkForm

Добавлено: 20 июл 2003, 16:25
dz
Kyokushin

если приведете текст длл-функции и её вызова то знатоки (эт не про меня) помогут \ наверна :)

Re: Вызов DLL функции из LinkForm

Добавлено: 04 авг 2003, 08:44
kostya_100
Возможно Integer в Delphi это не то же самое, что Integer в Галактике

Посмотрите здесь, может поможет чем ...

Добавлено: 07 авг 2003, 06:53
OlleUp
www.galaktika-dv.ru
В разделе Форум и статьи

еще думаю будет полезно

Добавлено: 13 май 2005, 14:17
GTHack
если dll мутить на паскале (дельфи), то
1. на паскале использовать ShortString а не String
2. для передачи строки в dll юзаем oem2ansi
3. соответственно строковый результат ф-ии конвертим ansi2oem

Добавлено: 18 июл 2005, 09:58
Serges
Возможно Integer в Delphi это не то же самое, что Integer в Галактике
А как насчет остальных типов? Написал dll на Delphi 7, с горем попалам передал в нее тип integer - с помощью функции Oem2Ansi. Обратно получить не могу - ни integer, ни string, ни даже boolean. Точнее, получаю, но совсем не то, что возвращает функция...

Добавлено: 18 июл 2005, 10:19
Goblin
Oem2Ansi(var x:Integer) ???
Оригинально :)

Кстати , какие математические функции можно сделать во внешней DLL и нельзя в формулах языка ADV, который в галке пользуется для описания мат. формул ?

Добавлено: 18 июл 2005, 10:53
Serges
Goblin писал(а):Oem2Ansi(var x:Integer) ???
Оригинально :)
Именно! MyFunc(Oem2Ansi(1)) - в DLL передается 1, а если MyFunc(1) - передается какая-то ерунда :shock: