powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Материал про использование DSO в C++
7 сообщений из 7, страница 1 из 1
Материал про использование DSO в C++
    #33176214
dmitry_kz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите, пожалуйста, найти примеры работы с DSO в С++.

Поискал, и что-то все примеры на VB.

Спасибо. :)
...
Рейтинг: 0 / 0
Материал про использование DSO в C++
    #33176484
O_Vital
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, есть какие-то принципиальные отличия?
и там и там интерфейсы и классы с набором свойств и методов.
вызывай их (благо имена почти всегда совпадают) и радуйся.
...
Рейтинг: 0 / 0
Материал про использование DSO в C++
    #33177882
dmitry_kz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
O_VitalА что, есть какие-то принципиальные отличия?
и там и там интерфейсы и классы с набором свойств и методов.
вызывай их (благо имена почти всегда совпадают) и радуйся.

Я не могу их подключить :) Помоги примером, плиз... Как их подключить...
Где-то видимо не прописал чего-то :) Какие-нибудь линки... :)
...
Рейтинг: 0 / 0
Материал про использование DSO в C++
    #33178114
O_Vital
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день,dmitry_kz.
В С++ не очень силен да и нету под рукой его, чтобы дать дельный совет.

В Delphi всё делается так:
1. утилитой tlibimp.exe создаёшь TLB-файл из msmddo80.dll. Там будут классы обертки для вызовов COM-вских классов.
2. в свой проект кидаешь ссылку на TLB.
3. содаешь объекты и пишешь свою консоль Analysis Manager :-))
з.ы. TLB-файл не всегда получается идеальным, очень часто приходится дописывать/править его, чтобы получить требуемую реализацию.

подробности смотри на MS, здесь или лучше здесь

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
'Пример на VB:
Private Sub ListBases()
    Dim dsoServer As New DSO.Server
    Dim dsoDB As DSO.MDStore

    dsoServer.Connect "LocalHost"

    For Each dsoDB In dsoServer.MDStores
        Debug.Print "DATABASE: " & dsoDB.Name & " - " & _
        dsoDB.Description
    Next
End Sub

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
//а вот на Delphi(разницы особой вроде нет):
procedure ListBases;
var
  dsoServer: TServer;
  dsoDB: TMDStore;
  i: integer;
begin
  ComboBox1.Items.Clear;

  dsoServer := TServer.Create(Self);
  dsoDB := TMDStore.Create(self);

  dsoServer.Connect1('LocalHost');


  for i :=  1  to dsoServer.MDStores.Count do begin
    dsoDB.ConnectTo(IDispatch(dsoServer.MDStores.Item(i)) as _MDStore);
    ComboBox1.Items.Add(dsoDB.Description);
  end;

  dsoServer.Free;
  dsoDB.Free;
end;

В С++ всё примерно тоже самое.
...
Рейтинг: 0 / 0
Материал про использование DSO в C++
    #33179291
dmitry_kz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за совет :)

Нашел я в инете *.tlb - файлик... и то, как его подключать...
Подключил, но все равно не получается... Вроде бы namespace видит... А вот объекты создавать не хочет... :( Говорит, что типа не определен класс или структура, или вообще говорит, что не могу создать абстрактный класс... А где взять нормальный (без абстрактных методов) класс? Не пойму......

Неужели никто не работает с DSO на С++? :)
...
Рейтинг: 0 / 0
Материал про использование DSO в C++
    #33179358
O_Vital
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте в сишный форум ломануться, там наверняка найдутся спецы, которые вам помогут.
...
Рейтинг: 0 / 0
Материал про использование DSO в C++
    #33179485
zmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
O_VitalПопробуйте в сишный форум ломануться, там наверняка найдутся спецы, которые вам помогут.
я не работаю , но вот тут накропал немного, думаю хватит, а вообще неплохо бы вам почитать немного как работать с COM

#import "C:\Program Files\Common Files\System\ADO\msado21.tlb" no_namespace rename( "EOF", "adoEOF" )
#import "C:\Program Files\Common Files\Microsoft Shared\DSO\msmddo80.dll" no_namespace named_guids rename ("Properties", "dsoProperties") rename ("GetObject", "dsoGetObject") rename ("Command", "dsoCommand") rename ("_Command", "_dsoCommand") rename ("Property", "dsoProperty")


HRESULT hRes = ::CoInitialize(NULL);
try
{
// Initialize the OLE Library..
_ServerPtr pServer(CLSID_Server);
pServer->Connect("localhost");
_DatabasePtr pNewDb = pServer->GetMDStores()->Item(_variant_t(long(1)));
::MessageBox(0,pNewDb->GetDescription(),"",0);
_CubePtr pCube = pNewDb->GetCubes()->AddNew("TestCube",sbclsRegular);
pCube->Update();
pCube->Process(processFull); //
pServer->CloseServer();
CoUninitialize();
}
catch(_com_error e)
{
::MessageBox(0,e.Description(),"Error",0);

}
CoInitialize(NULL);
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Материал про использование DSO в C++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]