· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Покажите как использовать COM

Посл.отвђт Сообщенiе


Дата: Окт 26, 2003 20:08:19 · Поправил: Zauberer

Здравствуйте, уважаемые знатоки, а также им сочувствующие!
Помогите разобраться начинающему фанату ASM'а (хм.. как-то
патетично получилось..).
Я хочу написать прогу на ASM для связи с БД Cache (кто не знает БД - не пугайтесь: вопрос не связан с этим).
Связь осуществляется через объект COM.
Я много читал про COM - в теории все хорошо, доходит до практики - ноль, не получается и все тут! Basta!
В общем у меня просьба к тем людям, к-е могут потратить немного своего свободного времени и помочь начинающим.
Ниже я напишу код на Visual Basic и его аналог на Delphi (кто что знает).
Пожалуйста, покажите, как это будет на ASM.(желательно, MASM) Просто кодом - я пойму. Выручите!

Visual Basic:

Option Explicit
Dim Factory As CacheObject.Factory
Dim connectstring As String
Dim success As Boolean
Private Sub Form_Load()
‘Создаем экземпляр класса Factory
‘Для присваивания объекту значения используется Set
Set Factory = CreateObject(“CacheObject.Factory”)
‘Если соединение с сервером отсутствует, создаем его
If Not Factory.IsConnected() Then
'диалоговое окно:
‘connectstring = Factory.ConnectDlg()
success = Factory.Connect(connectstring)
End If
End Sub



Delphi:

procedure TForm1.FormCreate(Sender: TObject);
var
ConnectStr : String;
Factory : Variant;
begin
Factory := CreateOleObject('CacheObject.Factory');
ConnectStr := Factory.ConnectDlg;
If Not Factory.Connect(ConnectStr)
then MessageDlg('Could not connect to Cache',mtError,[mbok],0);
end;

Все.
Здесь используется объект Factory из библиотеки CacheObject.dll.
Основное, что бы мне хотелось увидеть, это как вызвать методы Factory (Да и как создать этот самый Factory?).

В заключение прошу не смеяться над начинающим:
если можете - помогите, нет - так нет..
Может, у кого есть похожие примеры? (код?) Ну кроме стандартных, из пакета MASM.
Ну что ж, спасибо, что дочитали до этого места.
Буду искренне рад ответу.


Дата: Окт 27, 2003 01:31:59

Однако...
Может с COM начинать-то не стОит? Я уже почти год пишу на Асме, а с OLE работать еще не научился :(


Дата: Окт 27, 2003 02:22:36

Zauberer
Примеры COM для MASM32 можно найти в самом пакете: MASM32\COM\Examples. Рекомендую заглянуть на сайт Ernie (url забыл) и в соответствующую ветку форума http://board.win32asmcommunity.net/


Дата: Окт 27, 2003 03:36:50

OK..
Но если кто сможет перевести или еще какой пример кинуть - буду только рад...


Дата: Окт 29, 2003 00:49:14


Дата: Окт 29, 2003 01:52:13

Ну, так енто первым делом! :)
Но хотелось бы побольше практических примеров...
Можно своих..
Чтоб можно было перевести с VB (см. выше)


Дата: Окт 29, 2003 04:16:26

Zauberer
Но хотелось бы побольше практических примеров...
Кроме тех, что в дистрибутиве с масмом, и тех, что на сайте лежат, пожалуй стоит упомянуть пример на использование IWebBrowser.


Дата: Окт 29, 2003 09:32:03

Zauberer
хотелось бы побольше практических примеров...
Какой еще практичности надо?
CreateObject/CreateOleObject -> CLSIDFromProgID+CoCreateInstance
помощи QueryInterface получить IID_IDispatch, при помощи метода IID_IDispatch::GetIDsOfNames получать идентификаторы конкретных методов объекта (IsConnected, ConnectDlg и Connect) и использовать эти идентификаторы в IDispatch::Invoke. (Иногда можно пропускать QueryInterface и сразу GetIDsOfNames)

До любых действий с OLE необходимо выполнить CoInitialize, а после CoUninitialize.

Прибавь к вышеперечисленному проверку на всевозможные ошибки и задумайся: "А оно тебе надо на ассемблере?"


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.046