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

Вниз

Реализация методов IDispatch   Найти похожие ветки 

 
cloix ©   (2006-10-09 11:38) [0]

Здравствуйте, ALL!

Застопорился на такой проблеме.

Имеется чужая библиотека MyCommPort.dll, написанная на Visual Basic 6.

Из документации к dll:

DLL библиотека реализована в виде класса (class) в составе функций:
myCoin_setup(mycoin_type As String) As Boolean;
myComm_setup(myport_number As Long, myport_setting As String) As Boolean;
myComm_status(myport_number As Long, myport_setting As String, mybuffer_size As Long, myport_open As Boolean) As Boolean;
PSCOMM_Open()As Boolean;
PSCOMM_Close()As Boolean;
myComm_poll(mycoin_number As Long, mycredit_value As Long, mytype_count As String) As Boolean;
----------- Конец документации -----------------

Регистрирую библиотеку в системе, и в новый проект делаю импорт библиотеки (Project --> Import Type Lidrary). На панели ActiveX появился новый компонент PSCommPort. Перетянул Этот компонент на форму и попытался вызвать функцию PSCommPort1.myComm_setup этого компонента, но функция описана(из подсказки "Знатока кода") как:

myComm_setup(var myComm: IDispatch; var myport_number: Integer; var myport_setting: WideString): WordBool;

Что это за myComm типа IDispatch? Как мне его описать? Как правильно вызвать функцию PSCommPort1.myComm_setup?

Для чего использовать интерфейс IDispatch при вызове метода этого интерфейса, причем, как параметр метода, если интерфейс IDispatch позволяет обращаться к методам непосредственно по имени?

В файле imports/MyCommPort_TLB.pas нашел описание интерфейсов:

// *********************************************************************//
// Forward declaration of types defined in TypeLibrary                  
// *********************************************************************//
 _PSCommPort = interface;
 _PSCommPortDisp = dispinterface;

// *********************************************************************//
// Declaration of CoClasses defined in Type Library                    
// (NOTE: Here we map each CoClass to its Default Interface)            
// *********************************************************************//
 PSCommPort = _PSCommPort;

// *********************************************************************//
// Interface: _PSCommPort
// Flags:    (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {DE6686CB-682D-4DEE-8827-68FAD790474B}
// *********************************************************************//
 _PSCommPort = interface(IDispatch)
   ["{DE6686CB-682D-4DEE-8827-68FAD790474B}"]
   function myComm_status(var myComm: IDispatch; var myport_number: Integer;
                         var myport_setting: WideString; var mybuffer_size: Integer;
                         var myport_open: WordBool): WordBool; safecall;
   function myComm_setup(var myComm: IDispatch; var myport_number: Integer;
                         var myport_setting: WideString): WordBool; safecall;
   function myCoin_setup(var coin_type: WideString): WordBool; safecall;
   function PSCOMM_Open(var myComm: IDispatch): WordBool; safecall;
   function PSCOMM_Close(var myComm: IDispatch): WordBool; safecall;
   function myComm_poll(var myComm: IDispatch; var mycoin_number: Integer;
                       var mycredit_value: Integer; var mytype_count: WideString;
                       var status_poll: WideString): WordBool; safecall;
 end;

// *********************************************************************//
// DispIntf:  _PSCommPortDisp
// Flags:    (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {DE6686CB-682D-4DEE-8827-68FAD790474B}
// *********************************************************************//
 _PSCommPortDisp = dispinterface
   ["{DE6686CB-682D-4DEE-8827-68FAD790474B}"]
   function myComm_status(var myComm: IDispatch; var myport_number: Integer;
                         var myport_setting: WideString; var mybuffer_size: Integer;
                         var myport_open: WordBool): WordBool; dispid 1610809344;
   function myComm_setup(var myComm: IDispatch; var myport_number: Integer;
                         var myport_setting: WideString): WordBool; dispid 1610809345;
   function myCoin_setup(var coin_type: WideString): WordBool; dispid 1610809346;
   function PSCOMM_Open(var myComm: IDispatch): WordBool; dispid 1610809347;
   function PSCOMM_Close(var myComm: IDispatch): WordBool; dispid 1610809348;
   function myComm_poll(var myComm: IDispatch; var mycoin_number: Integer;
                       var mycredit_value: Integer; var mytype_count: WideString;
                       var status_poll: WideString): WordBool; dispid 1610809349;
 end;

Большое Спасибо!


 
Slym ©   (2006-10-09 13:39) [1]

var port:variant;
begin
if CommPort.Open(port) then
 CommPort.myComm_setup(port,2,"at");



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

Форум: "Corba";
Текущий архив: 2009.10.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
9-1182467887
Гоньщик
2007-06-22 03:18
2009.10.11
GLScene Как сделать зеркало заднего вида?


1-1219569740
dmitry_12_08_73
2008-08-24 13:22
2009.10.11
Помогите, плиз, с нахождением под курсором Handle любого окна


15-1249737117
alex649
2009-08-08 17:11
2009.10.11
алгоритм кластеризации ISODATA


2-1249894959
niel
2009-08-10 13:02
2009.10.11
запись чтение TMemoryStream


15-1249211618
KilkennyCat
2009-08-02 15:13
2009.10.11
Рекомендую москвичам покинуть Москву на весь день 4-го числа.





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