Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как можно реализовать связывание / 6 сообщений из 6, страница 1 из 1
16.06.2010, 15:55
    #36690406
Armani
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно реализовать связывание
Есть такая программа программа checkxml для проверки файлов 2-ндфл и файлов ПФР
у нее есть библиотека CPSNXML.dll, эта библиотека не регистрируется с помощью функции regsvr32
а мне необходимы вызовы функций из библиотеки
Declare Function cpsnInitLib Lib "CPSNXML" (hParent As Long, ByVal sBaseDir As String) As Long
Declare Function cpsnInitLib2 Lib "CPSNXML" (hParent As Long, ByVal sBaseDir As String, ByVal sKladrDir As String) As Long
Declare Function cpsnValidate Lib "CPSNXML" (ByVal sXmlFileName As String, ByRef nError As Long, ByRef nWarning As Long) As Long
Declare Function cpsnValidateZ Lib "CPSNXML" (ByVal sXmlFileName As String) As Long
Declare Function cpsnGetLogFileName Lib "CPSNXML" (ByVal sXmlFileName As String, ByVal sLogFileName As String, ByVal nLogFileNameLen As Long, ByVal bFullPath As Long) As Long
Declare Function cpsnFreeLib Lib "CPSNXML" () As Long
т.е. я могу только скопировать в папку программу файл CPSNXML.dll, тогда все работает.
Но постоянно его копировать неудобно, версия программы часто меняется,
а хотелось бы реализовать как то так указаьб в переменной путь к программе chtckxml и как-то обращаться к новой версии библиотеки, что можно придумать?
...
Рейтинг: 0 / 0
16.06.2010, 16:05
    #36690438
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно реализовать связывание
Зачем файл CPSNXML.dll копировать постоянно? Он же не меняется. Или меняется?
...
Рейтинг: 0 / 0
16.06.2010, 16:31
    #36690538
Armani
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно реализовать связывание
да, этот файл cpsnxml.dll постоянно меняется, т.е. это основной файл проверочной программы.
Во многих программах, написанных на других языках программирования, это как-то сделано.
...
Рейтинг: 0 / 0
16.06.2010, 16:46
    #36690573
Armani
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно реализовать связывание
Так вот реализовано на Дельфи
@cpsnInitLib:=nil;
xmlLibHandle:=LoadLibrary(xmlC_dir+'\cpsnxml.dll');
if xmlLibHandle >= 32 then begin
@cpsnInitLib := GetProcAddress(xmlLibHandle,'cpsnInitLib');
и т.д.
...
т.е. как в visual basic прописать путь к библиотеке cpsnxml.dll
...
Рейтинг: 0 / 0
16.06.2010, 16:54
    #36690613
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно реализовать связывание
ArmaniТак вот реализовано на Дельфи
@cpsnInitLib:=nil;
xmlLibHandle:=LoadLibrary(xmlC_dir+'\cpsnxml.dll');
if xmlLibHandle >= 32 then begin
@cpsnInitLib := GetProcAddress(xmlLibHandle,'cpsnInitLib');
и т.д.
...
т.е. как в visual basic прописать путь к библиотеке cpsnxml.dll

в декларации этот путь и указывается, но подход как в дельфи у вас здесь не пройдёт легко. если очень хочется, то можете погуглить, были способы такого вызова c++ библиотек из бейсика, но слишком наворочено будет
...
Рейтинг: 0 / 0
16.06.2010, 16:56
    #36690620
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно реализовать связывание
Armani,

можно и через LoadLibrary, но не нужно, тем более, что она (точнее, LoadLibraryExW) вызывается автоматически при первом вызове каждой функции, объявленной Declare. Объявляйте в Declare имя библиотеки без пути, но перед (первым) вызовом делайте ChDrive и ChDir в каталог установки библиотеки. Перед этим можно запомнить текущий диск и каталог, потом вернуться назад. Можно оформить этот приём в виде функций-оболочек задекларированных функций.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как можно реализовать связывание / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]