Главная страница
    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.013 c
1-36687
_юзер_
2003-12-02 17:58
2003.12.12
MDI


4-36900
destroer
2003-10-16 14:25
2003.12.12
Сбор данных о компьютере


4-36883
Ascan_
2003-10-21 17:36
2003.12.12
Пункт меню Help справо, а не в одном ряду с остальными


3-36518
Patrick
2003-11-21 14:31
2003.12.12
Интеграция


3-36570
Developerr
2003-11-20 11:42
2003.12.12
Как перевисти текст из поля Memo в обычную строку?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский