Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблема с вызовом библиотеки / 20 сообщений из 20, страница 1 из 1
12.07.2006, 12:13
    #33847485
neZnauKto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
Я решил задать вопрос и тут, поскольку вопрос с моей точки зрения адекватен для Делфи и для VB6 .

Вопрос:
Досталась мне по наследству библиотека написанная на Делфи, я хочу написать приложение на VB6.

Приложение написанное мной на Делфи нормально взаимодействует с этой библиотекой:

Код: plaintext
1.
 function  MyFunction(arg1, arg2:  String ;  var  arg3:  String ): boolean; external 'MyLib.dll';

Но когда я пытаюсь сделать вызов её из VB:

Код: plaintext
1.
Private Declare Function MyFunction Lib "MyLib.dll" (ByVal arg1 As String, ByVal arg2 As String, ByRef arg3 As String) As Boolean
у меня выходит ошибка

The Instruction at "" referenced memory at "". The memory could not be "read"

The exception unknown software exception () occured in the application at location ""

Подскажите пожалуйста, что я забыл сделать.
...
Рейтинг: 0 / 0
12.07.2006, 12:55
    #33847687
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
попробуй через references подключить
...
Рейтинг: 0 / 0
12.07.2006, 12:58
    #33847695
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
neZnauKto
Но когда я пытаюсь сделать вызов её из VB:
Код: plaintext
1.
Private Declare Function MyFunction Lib "MyLib.dll" (ByVal arg1 As String, ByVal arg2 As String, ByRef arg3 As String) As Boolean
у меня выходит ошибка
Таки вызов ты пытаешься делать или объявление ?
...
Рейтинг: 0 / 0
12.07.2006, 13:11
    #33847750
ZeusTheTrueGod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
String из паскаля и VBString - разные вещи
Кроме того, возможно параметры передаются не в том порядке(PASCAL или CDECL надо указывать)

Delphi string: 1 байт длина дальше символы
VBString: 2 байта длина дальше символы потом 0 на конце

Юникод тоже мог повлиять
...
Рейтинг: 0 / 0
12.07.2006, 13:15
    #33847764
neZnauKto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
Antonariy neZnauKto
Но когда я пытаюсь сделать вызов её из VB:
Код: plaintext
1.
Private Declare Function MyFunction Lib "MyLib.dll" (ByVal arg1 As String, ByVal arg2 As String, ByRef arg3 As String) As Boolean
у меня выходит ошибка
Таки вызов ты пытаешься делать или объявление ?

Это объявлениt, вызов простой... я просто показал объявление в делфи и объявление в VB
...
Рейтинг: 0 / 0
12.07.2006, 13:17
    #33847768
neZnauKto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
ZeusTheTrueGodString из паскаля и VBString - разные вещи
Кроме того, возможно параметры передаются не в том порядке(PASCAL или CDECL надо указывать)

Delphi string: 1 байт длина дальше символы
VBString: 2 байта длина дальше символы потом 0 на конце

Юникод тоже мог повлиять
т.е. я так понял, не фонтан, можно даже не заморачиваться, или есть выход?
...
Рейтинг: 0 / 0
12.07.2006, 13:18
    #33847777
Абориген
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
VB корректно работает со строками С. Насчёт паскалевских - это наверно в дельфийском форуме надо спрашивать.
...
Рейтинг: 0 / 0
12.07.2006, 13:29
    #33847832
neZnauKto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
TIKOпопробуй через references подключить
никак, ошибку выдает
...
Рейтинг: 0 / 0
12.07.2006, 13:37
    #33847878
Абориген
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
Через References подключаются только ActiveX DLL. Функции обычных DLL объявляются с помощью Declare.
...
Рейтинг: 0 / 0
12.07.2006, 13:44
    #33847913
neZnauKto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
АборигенЧерез References подключаются только ActiveX DLL. Функции обычных DLL объявляются с помощью Declare.
Я это знаю, я просто на предложенный вариант ответил
...
Рейтинг: 0 / 0
12.07.2006, 14:22
    #33848117
neZnauKto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
Спасибо всем, я так понял, что эту задачу нужно решать написанием своей библиотеки.
Всем удачного времени суток.
...
Рейтинг: 0 / 0
12.07.2006, 15:20
    #33848421
Абориген
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
Можно написать на Delphi библиотеку-оболочку для имеющейся библиотеки, которая преобразует строковые параметры в форму, приемлемую для VB. Если память не изменяет, это AnsiString.
Или можно попробовать написать на VB преобразование паскалевской строки в строку VB. Правда не уверен, что это возможно.
...
Рейтинг: 0 / 0
12.07.2006, 15:36
    #33848518
neZnauKto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
АборигенМожно написать на Delphi библиотеку-оболочку для имеющейся библиотеки, которая преобразует строковые параметры в форму, приемлемую для VB. Если память не изменяет, это AnsiString.
Или можно попробовать написать на VB преобразование паскалевской строки в строку VB. Правда не уверен, что это возможно.

нет, спасибо, меня больше прельщает переход на vb net, c#, не хочу я использовать делфи, пускай не обижаются те, кто пишет на делфи.
...
Рейтинг: 0 / 0
08.02.2007, 17:14
    #34316779
AirBot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
Я может и не совсем в тему пишу...

Можно ли вызвать приложение, написанное на Delphi, из Visual Basica?
...
Рейтинг: 0 / 0
08.02.2007, 17:31
    #34316840
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
AirBotЯ может и не совсем в тему пишу...

Можно ли вызвать приложение, написанное на Delphi, из Visual Basica?
А что вы имеете в виду под вызовом приложения?
...
Рейтинг: 0 / 0
09.02.2007, 08:54
    #34317815
AirBot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
Ну это программка, работает с карт-ридером, вобщем читает код карты и записывает в текстовый файл. Надо из Basic вызвать ее, чтоб она получила номер, затем уже обработка файла передается Basic.
...
Рейтинг: 0 / 0
09.02.2007, 09:31
    #34317878
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
Можно.
...
Рейтинг: 0 / 0
09.02.2007, 09:39
    #34317907
AirBot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
Каким образом?

Хотя бы примерный кусочек кода... что то в роде App. .....?
...
Рейтинг: 0 / 0
09.02.2007, 09:53
    #34317952
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
Shell "C:\app.exe"
...
Рейтинг: 0 / 0
09.02.2007, 11:49
    #34318439
AirBot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом библиотеки
O! Благодарю.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблема с вызовом библиотеки / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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