Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Dll [D6, D7]


matroskin ©   (2005-09-13 13:16:00) 

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


isasa   (2005-09-13 17:14:00) [1]

:) еще бы!


Digitman   (2005-09-13 17:13:00) [2]


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


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


isasa   (2005-09-13 16:58:00) [3]

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


isasa   (2005-09-13 16:53:00) [4]

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

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


Digitman   (2005-09-13 16:45:00) [5]


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


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

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

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


begin...end   (2005-09-13 16:38:00) [6]


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

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


Digitman   (2005-09-13 16:34:00) [7]


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


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


isasa   (2005-09-13 15:58:00) [8]

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

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


Digitman   (2005-09-13 14:17:00) [9]


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


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

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


Ega23   (2005-09-13 14:05:00) [10]

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


Digitman   (2005-09-13 13:53:00) [11]


> 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 13:37:00) [12]

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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо