Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];

Вниз

вызываю дельфовый длл из 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
4-36899
mOOx_
2003-10-16 12:15
2003.12.12
Абсолютные координаты окна


7-36859
PaveL777
2003-09-02 04:27
2003.12.12
Температура процессора


1-36737
Dracula2000
2003-12-02 10:30
2003.12.12
Grid or DBGrid


14-36841
don-do
2003-11-19 14:56
2003.12.12
Господа, я тут ссылку нашел, крутой debuger, сходите, не пожалеет


3-36526
Svin
2003-11-20 08:54
2003.12.12
DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский