|
|
| Посл.отвђт | Сообщен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 |