Вызов stdcall функции из dll написанной на Delphi.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Gogic
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 24.08.2008 (Вс) 13:19

Вызов stdcall функции из dll написанной на Delphi.

Сообщение Gogic » 17.07.2013 (Ср) 12:37

Доброго времени суток. Хочу спросить, правильно ли осуществляю вызов.

Код: Выделить всё
'Function GetErrorText: PChar; stdcall;
Public Declare Function GetErrorText Lib "CscLink.dll" () As Long
 
'Function Login( AUser, APsw: PChar ): BOOL; stdcall;
Public Declare Function Login Lib "CscLink.dll" (ByVal AUser As Long, ByVal APsw As Long) As Boolean


Теперь форма

Код: Выделить всё
Dim tmpptr As Long
Dim tmpstring As String

Dim mBuff As String

mBuff = Space(100)


lgn = "user"
pwd = "1"

If Login(StrPtr(lgn), StrPtr(pwd)) = False Then
tmpptr = GetErrorText
mBuff = StrFromPtrA(tmpptr, 100)
Debug.Print mBuff
End If


Интересует, собственно вызов функции Login.
PChar в Delphi - указатель на строку.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Вызов stdcall функции из dll написанной на Delphi.

Сообщение Mikle » 17.07.2013 (Ср) 18:00

Насколько помню, BOOL в дельфи 32-битный, и True равно 1, а не -1, как в VB6, то есть Function Login должна быть As Long

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 17.07.2013 (Ср) 18:48

Mikle писал(а):Насколько помню, BOOL в дельфи 32-битный, и True равно 1, а не -1, как в VB6

А разве VB'шный вызов не приведёт 1 к VB'шному Boolean?

Gogic
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 24.08.2008 (Вс) 13:19

Re: Вызов stdcall функции из dll написанной на Delphi.

Сообщение Gogic » 17.07.2013 (Ср) 19:48

Это не суть, интересует, как библиотека обработает vb-шные стринги. Может ей юникод нужен или вообще байт-массив...

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Re: Вызов stdcall функции из dll написанной на Delphi.

Сообщение Vi » 18.07.2013 (Чт) 10:48

Сначала сделай проще, чтобы было понятно:
Код: Выделить всё
'Function GetErrorText: PChar; stdcall;
Public Declare Function GetErrorText Lib "CscLink.dll" () As String

'Function Login( AUser, APsw: PChar ): BOOL; stdcall;
Public Declare Function Login Lib "CscLink.dll" (ByVal AUser As String, ByVal APsw As String) As Boolean
...
If Login(lgn, pwd) = False Then
   tmpptr = GetErrorText
...
и, только если не сработает, делать всякие хаки с бубнами.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, SemrushBot, Yandex-бот и гости: 38

    TopList