Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 как обратиться к бибилиотеке .dll  [new]
unclefed
Member

Откуда:
Сообщений: 141
Есть функция , которая есть в dll-ке, как обратиться к ней из VBA?
8 дек 05, 10:51    [2152227]     Ответить | Цитировать Сообщить модератору
 Re: как обратиться к бибилиотеке .dll  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10938
я знаю два типа библиотек (возможно их больше)
алиасные и не алиасные

функции алиасных объявляют посредством DECLARE
неалиасные можно включить в референсы
8 дек 05, 10:54    [2152245]     Ответить | Цитировать Сообщить модератору
 Re: как обратиться к бибилиотеке .dll  [new]
unclefed
Member

Откуда:
Сообщений: 141
А можно пример строки подключения? Про это библиотеку мне ничего не известно, есть только текст программы на С, которая использует эту функцию:


#include "stdio.h"
#include "windows.h"

typedef int (FAR PASCAL * lpTestData)(char *, char *);
typedef int (FAR PASCAL * lpTestRic)(char *);

int main()
{

HINSTANCE libr;
lpTestData TestData;
lpTestRic TestRic;

libr=LoadLibrary("tsric321.dll");
if (libr != NULL)
{
TestData = (lpTestData) GetProcAddress(libr, "TestData");
if (TestData == NULL)
{
printf("Не могу загрузить функцию \"TestData\"\r\n");
return 0;
}
TestRic = (lpTestRic) GetProcAddress(libr, "TestRic");
if (TestData == NULL)
{
printf("Не могу загрузить функцию \"TestRic\"\r\n");
return 0;
}
}
else
{
printf("Не могу загрузить бибдиотеку \"TSRIC321.DLL\"\r\n");
return 0;
}

CHAR buff[100],spc[17];
sprintf(buff,"ИВАНОВСЕМЕНПЕТРОВИЧ15051970\0");
sprintf(spc,"000000000000000T\0");
TestData (buff,spc);
TestRic (spc);

printf("SPC=%s",spc);
FreeLibrary(libr);
return 0;
}
8 дек 05, 11:00    [2152279]     Ответить | Цитировать Сообщить модератору
 Re: как обратиться к бибилиотеке .dll  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10938
для начала попробуй зарегистрировать и подключить в референсы

ps регистрировать с помощью regsvr32.exe
8 дек 05, 11:02    [2152301]     Ответить | Цитировать Сообщить модератору
 Re: как обратиться к бибилиотеке .dll  [new]
Phantom_VM
Guest
MsDatabaseru
для начала попробуй зарегистрировать и подключить в референсы

ps регистрировать с помощью regsvr32.exe


Это не поможет ... :-) Скорее всего это даже на COM-сервер, а обычная dll, которую регистрировать не надо. Лучше посмотреть на VB-шных сайтах пример описания функций dll на VB и как их вызывать из VB. Как пример, можно посмотреть вызовы функций WinAPI на VB. Здесь идея - та же. Однако могут быть подводные камни в области декорирования функций в это длл.
8 дек 05, 11:15    [2152389]     Ответить | Цитировать Сообщить модератору
 Re: как обратиться к бибилиотеке .dll  [new]
REBUS
Member

Откуда: Астана
Сообщений: 213
А есть ссылки на готовые примеры?
Или на VB-Сайты.
Тоже очень интересно.
8 дек 05, 12:38    [2152936]     Ответить | Цитировать Сообщить модератору
 Re: как обратиться к бибилиотеке .dll  [new]
unclefed
Member

Откуда:
Сообщений: 141
Нашел пример:


Attribute VB_Name = "RusCases"
' Макросы склонения фамилий, имен и отчеств
' Copyright (c) 2000 Gennady Pokatashkin e-mail: pgl@gsu.unibel.by
' Sergey Plahov e-mail: S.Plahov@vaz.ru
' Tolik Gusin e-mail: stalker732_4@yahoo.com

Option Explicit

' Функция склонения ФИО с автоматическим определением пола по отчеству
' Параметры: pFIO - фамилия, имя, отчество
' nPadeg - падеж (допустимые значения: 1..6)
' pResult - буфер результата
' nLen - длина результата
' Значение: 0 - успешное завершение
' -1 - недопустимое значение падежа
Private Declare Function GetPadeg Lib "Padeg.dll" Alias "GetFIOPadegFSAS" _
(ByVal pFIO As String, ByVal nPadeg As Long, ByVal pResult As String, ByRef nLen As Long) As Integer

' Функция преобразования cFIO в падеж nPadeg
Public Function MakePadeg(ByVal cFIO As String, ByVal nPadeg As Long) As String
Dim tmpS As String
Dim nLen As Long
Dim RetVal As Integer
If Len(cFIO) = 1 Then Exit Function
tmpS = String(255, 0)
RetVal = GetPadeg(cFIO, nPadeg, tmpS, nLen)
If RetVal = -1 Then MsgBox "Недопустимое значение падежа - " & "(" & nPadeg & ")", , "Склонение ФИО"
MakePadeg = Mid(tmpS, 1, nLen)
End Function

' Макросы преобразования выделенного ФИО в соответствующий падеж

Public Sub Родительный()
Selection.TypeText (MakePadeg(Selection, 2))
End Sub

Public Sub Дательный()
Selection.TypeText (MakePadeg(Selection, 3))
End Sub

Public Sub Винительный()
Selection.TypeText (MakePadeg(Selection, 4))
End Sub

Public Sub Творительный()
Selection.TypeText (MakePadeg(Selection, 5))
End Sub

Public Sub Предложный()
Selection.TypeText (MakePadeg(Selection, 6))
End Sub
15 дек 05, 11:37    [2174214]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить