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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

renat
Посетитель
Сообщения: 38
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Россия Россия

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

Сообщение renat »

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

Кто нибудь сталкивался с такой проблемой? - вызовом самописных DLL из LinkForm ?
НЕТ
forummaster
Посетитель
Сообщения: 46
Зарегистрирован: 29 мар 2005, 17:49

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

Сообщение 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>
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

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

Сообщение m0p3e »

Дополнение:
function myfunc( [paramlist] ) : integer ; external 'myfunc.dll' ;
Можно писать как:
function myfunc( [paramlist] ) : integer ; external 'C:\MyFunc\myfunc.dll' ;
:)
renat
Посетитель
Сообщения: 38
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Россия Россия

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

Сообщение renat »

а как обявить функцию которая не взвращает никаких значений?

или фукнцию которая вообще ничего не передает и не получает?
НЕТ
renat
Посетитель
Сообщения: 38
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Россия Россия

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

Сообщение renat »

еще один БАГ (или фича?) :
в DLL имена функций написаны маленькими буквами а Галактика хочет большими - пришлось DLL перекомпилировать тогда вроде бы работает
НЕТ
sth
Постоянный обитатель
Сообщения: 148
Зарегистрирован: 29 мар 2005, 17:49

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

Сообщение sth »

фича. описанная в документации притом.
renat
Посетитель
Сообщения: 38
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Россия Россия

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

Сообщение renat »

опять баг или фича?

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

- Пробую в Linkform - не поимает и говорит ...нет такой функции, поля или метода...
НЕТ
renat
Посетитель
Сообщения: 38
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Россия Россия

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

Сообщение renat »

кто знает в чем косяк?
передаю в DLL integer значение (любое)
а внутри DLL принимается как 8 и никак иначе... как будто DLL вообще ничего не получает...

кто сталкивался с аналогичной проблемой?
НЕТ
dz
Сообщения: 11
Зарегистрирован: 29 мар 2005, 17:49

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

Сообщение dz »

Kyokushin

если приведете текст длл-функции и её вызова то знатоки (эт не про меня) помогут \ наверна :)
kostya_100
Сообщения: 14
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Казахстан
Контактная информация:

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

Сообщение kostya_100 »

Возможно Integer в Delphi это не то же самое, что Integer в Галактике
OlleUp
Сообщения: 7
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Хабаровск ООО Новый Атлант
Контактная информация:

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

Сообщение OlleUp »

www.galaktika-dv.ru
В разделе Форум и статьи
GTHack
Местный житель
Сообщения: 517
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск Новосибирск
Контактная информация:

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

Сообщение GTHack »

если dll мутить на паскале (дельфи), то
1. на паскале использовать ShortString а не String
2. для передачи строки в dll юзаем oem2ansi
3. соответственно строковый результат ф-ии конвертим ansi2oem
Serges
Местный житель
Сообщения: 228
Зарегистрирован: 29 мар 2005, 17:49

Сообщение Serges »

Возможно Integer в Delphi это не то же самое, что Integer в Галактике
А как насчет остальных типов? Написал dll на Delphi 7, с горем попалам передал в нее тип integer - с помощью функции Oem2Ansi. Обратно получить не могу - ни integer, ни string, ни даже boolean. Точнее, получаю, но совсем не то, что возвращает функция...
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

Сообщение Goblin »

Oem2Ansi(var x:Integer) ???
Оригинально :)

Кстати , какие математические функции можно сделать во внешней DLL и нельзя в формулах языка ADV, который в галке пользуется для описания мат. формул ?
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
Serges
Местный житель
Сообщения: 228
Зарегистрирован: 29 мар 2005, 17:49

Сообщение Serges »

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