Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.09.2017, 19:25
DIEsel DIEsel вне форума
Прохожий
 
Регистрация: 09.09.2016
Сообщения: 14
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Импорт функции из DLL (предположительно, написана на С)

Уже не первый день пытаюсь воспользоваться хоть одной функцией из SDK ZKTeco, но пока безуспешно. Раньше с таким не сталкивался, поиски на просторах интернета дали слабые результаты (перешел на динамическую загрузку - программа уже начала запускаться!)
Пытаюсь хотя бы подключиться или просто получить указатель на функцию - не выходит.
Так выглядит описание функции в мануале:

Connect_Net
[Definition] VARIANT_BOOL Connect_Net( [in] BSTR IPAdd, [in] long Portl)
[Usage] Connect to the device via the IP address and set up a network connection with the device.
[Parameter]
IPAdd: IP address of the device
Port: Port number used for connecting to the device. The default value is 4370.
[Return Value] Return True if it is successful, or return False.
[Related Function] Disconnect, Connect_Com, Connect_USB

Код небольшой программы следующий
Код:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ActiveX;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var W1:AnsiString;
    B1:TBSTR;
    L1:Longint;
    dHandle:THandle;
    Connect_Net: function (IPAdd:String; Port:Longint): boolean; cdecl; // stdcall не помогал
begin
@Connect_Net:=nil;
dHandle:=LoadLibrary('zkemkeeper.dll');
if dHandle<>0 then
  begin
  ShowMessage('DLL Load');
  @Connect_Net:=GetProcAddress(dHandle, 'Connect_Net');
  if @Connect_Net<>nil then
    begin
    W1:='192.168.1.201';
    B1:=Pointer(W1);
    L1:=4370;
    if Connect_Net(B1,L1) then
    ShowMessage('Connect!');
    end
  else
    begin
    ShowMessage('Import function Fail!');
    Exit;
    end;
  FreeLibrary(dHandle);
  end
else
  ShowMessage('Load DLL Fail!');
end;

end.
Вообще есть два архива с документацией и демо-программами с исходниками на C# (откуда я сделал вывод, что zkemkeeper - нужная библиотека): х86 и х64, на моем ноуте система х64 и Delphi 7, и нормально устанавливаются библиотеки х64, но с ними даже библиотека в программе не загружается, х86 ставиться не желают, но программа с библиотекой хоть как-то дружит.
Помогите, пожалуйста, хотя бы начать.
Файлы с SDK и демо-программами+исходники приложить не получилось, поэтому вставлю ссылки
Communication Protocol SDK(32Bit Ver6.2.4.1)
Communication Protocol SDK(64Bit Ver6.2.4.1)
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:03.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter