powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как можно реализовать связывание
6 сообщений из 6, страница 1 из 1
Как можно реализовать связывание
    #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
Как можно реализовать связывание
    #36690438
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем файл CPSNXML.dll копировать постоянно? Он же не меняется. Или меняется?
...
Рейтинг: 0 / 0
Как можно реализовать связывание
    #36690538
Armani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, этот файл cpsnxml.dll постоянно меняется, т.е. это основной файл проверочной программы.
Во многих программах, написанных на других языках программирования, это как-то сделано.
...
Рейтинг: 0 / 0
Как можно реализовать связывание
    #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
Как можно реализовать связывание
    #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
Как можно реализовать связывание
    #36690620
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Armani,

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


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