Ситуация такая: есть dll написанная на vb. В ней экспортирована одна функция
(Private Declare Function GetXXX Lib "xxx.dll" (ByVal str1 As String, ByVal str2 As String) As Integer — это её объявление в vb)
Мне нужно подключить эту dll в Delphi и вызвать эту функцию. Пишу
function GetXXX(var str1: String; var str2: String: Integer;
external 'xxx.dll';
При вызове функции из Delphi возникает ошибка 'Access violation in module xxx.dll'.
Кажется всё правильно, но может быть кто-то сталкивался с подобной проблемой и знает решение?
Здравствуйте, Аноним, Вы писали:
А>Ситуация такая: есть dll написанная на vb. В ней экспортирована одна функция А>(Private Declare Function GetXXX Lib "xxx.dll" (ByVal str1 As String, ByVal str2 As String) As Integer — это её объявление в vb) А>Мне нужно подключить эту dll в Delphi и вызвать эту функцию. Пишу А>function GetXXX(var str1: String; var str2: String: Integer; А>external 'xxx.dll'; А>При вызове функции из Delphi возникает ошибка 'Access violation in module xxx.dll'.
1. 100% что dll написана не на VB.
2. Попробуй указать для параметров AnsiString.
Re[2]: Visual Basic dll for Delphi
От:
Аноним
Дата:
28.09.04 10:48
Оценка:
Здравствуйте, algol, Вы писали:
A>1. 100% что dll написана не на VB. A>2. Попробуй указать для параметров AnsiString.
1. Возможно и не на VB. Просто она шла с приложением написанным на VB. Поэтому так и подумалось.
2. Пробовал и AnsiString и WideString и даже PChar. Ничего не помогает. Указывал команды stdcall; safecall; register; pascal; cdecl; Тоже ничего....
Здравствуйте, Аноним, Вы писали:
А>Ситуация такая: есть dll написанная на vb. В ней экспортирована одна функция А>(Private Declare Function GetXXX Lib "xxx.dll" (ByVal str1 As String, ByVal str2 As String) As Integer — это её объявление в vb)
Я тебе напишу прототип на С, а ты уж сам переведи в Delphi.
short __stdcall GetXXX( char * str1, char * str2 );
Здравствуйте, <Аноним>, Вы писали:
А>Ситуация такая: есть dll написанная на vb. В ней экспортирована одна функция А>(Private Declare Function GetXXX Lib "xxx.dll" (ByVal str1 As String, ByVal str2 As String) As Integer — это её объявление в vb) А>Мне нужно подключить эту dll в Delphi и вызвать эту функцию. Пишу А>function GetXXX(var str1: String; var str2: String: Integer; А>external 'xxx.dll';
А>При вызове функции из Delphi возникает ошибка 'Access violation in module xxx.dll'.
А>Кажется всё правильно, но может быть кто-то сталкивался с подобной проблемой и знает решение?
А>P.S.: исходников dll нет.
VB6 не умеет делать обыкновенные DLL, только ActiveX. Использовать их можно через OLE.
... << RSDN@Home 1.1.4 @@subversion >>
Re: Visual Basic dll for Delphi
От:
Аноним
Дата:
30.09.04 12:30
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Ситуация такая: есть dll написанная на vb. В ней экспортирована одна функция А>(Private Declare Function GetXXX Lib "xxx.dll" (ByVal str1 As String, ByVal str2 As String) As Integer — это её объявление в vb) А>Мне нужно подключить эту dll в Delphi и вызвать эту функцию. Пишу А>function GetXXX(var str1: String; var str2: String: Integer; А>external 'xxx.dll';
А>При вызове функции из Delphi возникает ошибка 'Access violation in module xxx.dll'.
А>Кажется всё правильно, но может быть кто-то сталкивался с подобной проблемой и знает решение?
А>P.S.: исходников dll нет.
1. тебе Private ни о чем не говорит?
2. это код VB (стандартное использование не COM Dll). А разве в Delphi нельзя вызвать функцию из не COM dll? Dll тебе должна быть известна (xxx.dll), функция то же (GetXXX) что еще надо? Нафига тебе вызывать GetXXX через VB?
Ты вопрос-то читал?
А>1. тебе Private ни о чем не говорит?
А тебе о чем говорит?
А>2. это код VB (стандартное использование не COM Dll). А разве в Delphi нельзя вызвать функцию из не COM dll?
Еще как можно. Не хуже, чем в VB.
А>Dll тебе должна быть известна (xxx.dll), функция то же (GetXXX) что еще надо? Нафига тебе вызывать GetXXX через VB?
А никто и не вызывает.
Re[3]: Visual Basic dll for Delphi
От:
Аноним
Дата:
30.09.04 13:39
Оценка:
Здравствуйте, algol, Вы писали:
A>Здравствуйте, Аноним, Вы писали:
A>Ты вопрос-то читал?
По слогам
A>А никто и не вызывает.
Да? а что пытается делать ? (<quote>Мне нужно подключить эту dll в Delphi и вызвать эту функцию</quote>)
Поэтому еще раз повторюсь ЭТУ.DLL не надо юзать надо юзать xxx.dll
A> А тебе о чем говорит?
Например то что хрен другой "Аноним" вызовет эту функцию. Причем не только из Delphi.
ЗЫ долго однако регистрация здесь идет.....
Re[2]: Visual Basic dll for Delphi
От:
Аноним
Дата:
30.09.04 13:44
Оценка:
Здравствуйте, algol, Вы писали:
A>1. 100% что dll написана не на VB.
Мда... Лучше бы вы кроме >Ты вопрос-то читал? >Еще как можно. Не хуже, чем в VB. >А никто и не вызывает.
ничего бы не писали. Просто за флудера сошли бы
Re: Visual Basic dll for Delphi
От:
Аноним
Дата:
30.09.04 13:56
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Ситуация такая: есть dll написанная на vb. В ней экспортирована одна функция А>(Private Declare Function GetXXX Lib "xxx.dll" (ByVal str1 As String, ByVal str2 As String) As Integer — это её объявление в vb) А>Мне нужно подключить эту dll в Delphi и вызвать эту функцию. Пишу А>function GetXXX(var str1: String; var str2: String: Integer; А>external 'xxx.dll';
А>При вызове функции из Delphi возникает ошибка 'Access violation in module xxx.dll'.
А>Кажется всё правильно, но может быть кто-то сталкивался с подобной проблемой и знает решение?
А>P.S.: исходников dll нет.
Проблема решается следующим образом забываешь о существовании есть.dll и VB.
Идеш в форум по Delphi и спрашиваешь <msg>Как из не комовской xxx.dll вызвать функцию GetXXX</msg>
Здравствуйте, Аноним, Вы писали:
А>Да? а что пытается делать ? (<quote>Мне нужно подключить эту dll в Delphi и вызвать эту функцию</quote>)
А>Поэтому еще раз повторюсь ЭТУ.DLL не надо юзать надо юзать xxx.dll
A>> А тебе о чем говорит? А>Например то что хрен другой "Аноним" вызовет эту функцию. Причем не только из Delphi.
Объясняю по слогам. У анонима есть неизвестная DLL и пример вызова из нее функции на VB. Он в курсе, как вызывать функции из DLL в Delphi и вызывает ее, но получает ошибку. Т.е. он неправильно ее определил. Вопрос стоял — как правильно описать эту функцию в Delphi по известному определению в VB.
Никакие промежуточные dll (ЭТА.DLL) для вызова этой функции не используются. И Private здесь по барабану.
VB. Он в курсе, как вызывать функции из DLL в Delphi и вызывает ее, но получает ошибку. Т.е. он неправильно ее определил. Вопрос стоял — как правильно описать эту функцию в Delphi по известному определению в VB. A>Никакие промежуточные dll (ЭТА.DLL) для вызова этой функции не используются. И Private здесь по барабану.
Если <quot>по известному определению в VB</quot> то в чем проблема? Имя функции он знает, имя dll то же... что он тогда делает в ветке VB? Нафига подключает библиотеку на VB?, пусть он идет в ветку дельфи и просит что бы ему рассказали как работать с API в прочем я это уже писал 30.09.04 17:56 (токо тогда у меня ника не было).