Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.02;
Скачать: CL | DM;

Вниз

Dll   Найти похожие ветки 

 
matroskin ©   (2005-09-13 13:16) [0]

Уважаемые мастера подскажите пожалуисто как ето
Private Declare Function extlib Lib "library.dll" Alias "EXTLIB" (ByVal N As String) As Integer
extlib ("Rabotat")
из бейсика перенести в делфи
Spasibo


 
Ega23 ©   (2005-09-13 13:37) [1]

function extLib(const N:String):Integer; exports "library.dll";

Вроде так. Только проблем будет - масса.


 
Digitman ©   (2005-09-13 13:53) [2]


> Ega23 ©   (13.09.05 13:37) [1]


> проблем будет - масса


угу.

думаю, что как минимум - из-за отсутствия в соответствующей Паскаль-декларации stdcall-соглашения о вызове

Васик это неявно подразумевает.

Ну и еще одну проблему автору на уши вешаешь - const N:String

String в Васике и String в Паскале - две разные разницы.

function extlib(const N:PChar):Integer; exports "library.dll" name "Rabotat"; stdcall;


 
Ega23 ©   (2005-09-13 14:05) [3]

А в бейсике stdcall по-умолчанию?
Давно с ним дела не имел, лет 5 уже...


 
Digitman ©   (2005-09-13 14:17) [4]


> Ega23 ©   (13.09.05 14:05) [3]


я - о Визуальном Васике в Мелкомягком Офисе ...

там - да,  stdcall .. за другие не ручаюсь.


 
isasa ©   (2005-09-13 15:58) [5]

>я - о Визуальном Васике в Мелкомягком Офисе ...
тогда неправильно, надо
function extlib(const N:PChar):Smallint; exports "library.dll" name "Rabotat"; stdcall;

В офисном васике базовый тип integer - 16 bit


 
Digitman ©   (2005-09-13 16:34) [6]


> В офисном васике базовый тип integer - 16 bit


с какого перепугу ?! под Win32-то тем паче ?


 
begin...end ©   (2005-09-13 16:38) [7]


> Digitman ©   (13.09.05 16:34) [6]

Integer -- 16 бит, Long -- 32 бита.


 
Digitman ©   (2005-09-13 16:45) [8]


> begin...end ©   (13.09.05 16:38) [7]


однако не факт, что ф-ция extlib возвращает именно 16-битный результат.

она вполне может возвращать и 32-битный рез-т, по диапазону фактически возвращаемых значений вполне корректно преобразуемый в  16-битный smallint (тот самый Integer из Васика)

да и какой дебил будет возвращать рез-т в ax (вместо eax, что стандартно) при данных условиях ?


 
isasa ©   (2005-09-13 16:53) [9]

Private Declare Function extlib Lib "library.dll" Alias "EXTLIB" (ByVal N As String) As Integer

Сказано - возвратить знаковое целое 16 бит (если Офис васик) - остальное неточные науки. Танцы с бубнами.


 
isasa ©   (2005-09-13 16:58) [10]

Добавлю, работал с этим.
Цеплял DLL(сделаные в D). Номера с целыми (типа процессор все равно 32 - проскочим) не проходят.
Если в D integer, в васике - Long. Ну и соответственно.


 
Digitman ©   (2005-09-13 17:13) [11]


> isasa ©   (13.09.05 16:53) [9]


хорошо, согласен.


 
isasa ©   (2005-09-13 17:14) [12]

:) еще бы!



Страницы: 1 вся ветка

Текущий архив: 2005.10.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.057 c
5-1101645949
AMD
2004-11-28 15:45
2005.10.02
StringGrid


14-1126027956
Nous Mellon_
2005-09-06 21:32
2005.10.02
html-засада


2-1124965240
Laymer
2005-08-25 14:20
2005.10.02
Компоненты


1-1126014295
NikNet
2005-09-06 17:44
2005.10.02
Чем отличаются виртуальные и простые методы?


2-1124460469
inic
2005-08-19 18:07
2005.10.02
TClientDataSet.Refresh