Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.12;
Скачать: CL | DM;

Вниз

вызываю дельфовый длл из VB   Найти похожие ветки 

 
Pavels   (2003-11-30 22:45) [0]

проблема с передачей параметров
длл из клиена на дельфе чисто глако пашет
из ВБ проблема
подскажите что и как

коде:

дельфа

function GetPage(mUrl:String):Boolean;

ВБ

Declare Ansi Function GetPage Lib "google.dll" (ByVal sURL As String) As Boolean


 
Pavels   (2003-11-30 22:50) [1]

когда отлаживал
догадываюсь что VB
передает
в WideString
только вот
проблема
как мне это побороть у себя ??


 
Slym ©   (2003-12-01 04:47) [2]

function GetPage(mUrl:String):Boolean; -> не пашет!!!

function GetPage(mUrl:PChar):LongBool;


 
Юрий Зотов ©   (2003-12-01 07:47) [3]

Четыреста восемьдесят третий...

> Pavels

Когда Вы создавали проект новой DLL, то Delphi вставила в заготовку кода здоровенный комментарий. Как Вы думаете, она его вставила для Вас, или для дяди Пети? Для того, чтобы Вы его прочли, или для того, чтобы Вы его стерли, не читая?

Прочтите. И еще прочтите про ShareMem в справке. А потом переделайте string на PChar.


 
Pavels   (2003-12-01 09:24) [4]

переделал
непомоло
может руки кривые подскажите в чем проблема


 
Юрий Зотов ©   (2003-12-01 09:28) [5]

Стандартные проблемы - не выделена память, или выделена не там, или не там освобождена, или не освобождена вовсе. Нужно видеть код.


 
Digitman ©   (2003-12-01 09:36) [6]

function GetPage(mUrl:PChar):LongBool; stdcall;

как минимум, соглашение о вызове д.б. соблюдено

и + < Юрий Зотов © (01.12.03 09:28) [5] >


 
Pavels   (2003-12-01 09:38) [7]

все ...
спасибо все
работает


 
REA ©   (2003-12-01 10:43) [8]

Имеет смысл использовать COM - несколько сложнее, но предназначено именно для взаимодействия программ на разных языках (многопоточности и устранения других проблем).
Хотя тут наверно и DLL достаточно.

PS: брось ты его, этот бэйсик ;)


 
Pavels   (2003-12-01 12:37) [9]

вообщем невсе так ладно как показалось
проблема с передачей строки назад
в VB прилоджение

так все работает

function GetPage(mUrl:PChar; TimeOut:Integer):Boolean; safecall;

Declare Ansi Function GetPage Lib "google.dll" (ByVal sURL As String, ByVal TimeOut As Integer) As Boolean

пытаюсь вернуть/принять строку
все
external error


 
Digitman ©   (2003-12-01 12:43) [10]

ээ ... а где из вышеупомянутой тобой декларации видно, что ты нечто строковое ожидаешь от вызываемой ф-ции как рез-т ее работы ?


 
Pavels   (2003-12-01 12:48) [11]

если вместо Boolean стоит String
все
я показал как у меня работает


 
Digitman ©   (2003-12-01 12:54) [12]


> Pavels



> если вместо Boolean стоит String


брось эту затею, работать это не будет

передавай ByVal-факт.параметром строку заранее установленной длины, и DLL ее просто заполнит нужными стр.данными длиной не более чем выделенной в выз.коде

не нравится ? переделывай DLL во внутренний OLE/COM-сервер автоматизации, тогда строковый рез-т будет позволительно возвращать в виде OleVariant как результат вызова соотв.метода сервера


 
Юрий Зотов ©   (2003-12-01 12:55) [13]

Почему safecall?
Где и как выделяется память под mURL?
Где и как она освобождается?


 
Romkin ©   (2003-12-01 13:01) [14]

Бррр... Как уже посоветовали, делайте элементарный Automation Object в этой dll. Это позволяет избежать подобных проблем. а в VB просто: set Obj = CreateObject(...) и пользовать, пользовать



Страницы: 1 вся ветка

Текущий архив: 2003.12.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
3-36581
Mikle
2003-11-20 12:22
2003.12.12
Как в Query ограничить число открываемых записей?


1-36721
TUser
2003-12-01 16:16
2003.12.12
jedi&gif


14-36823
Шишкин Илья
2003-11-19 17:02
2003.12.12
Блок схемы


1-36700
Ptr
2003-12-02 14:08
2003.12.12
Как увеличить переменную типа double на 0.5 ?


1-36728
Makhanev A.S.
2003-12-02 00:51
2003.12.12
Как Windows присваивает Handle Окнам?