CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Subiekt GT Sfera

Subiekt GT Sfera

dział ogólny

Subiekt GT Sfera

Nowy postprzez Mironas » środa, 18 kwietnia 2018, 09:44

Czy ktoś wie, jak podłączyć się z B++Builder-a do Subiekta GT za pomocą modułu SFERA ?
W helpie są tylko przykłady dla Visual Basic z poziomu aplikacji MS Office. Pewnie były by pomocne, ale nie wiem co trzeba podłączyć. Jakieś kontrolki ActiveX, biblioteki, pliki nagłówkowe???
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 437
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 21
Otrzymał podziękowań: 62
System operacyjny: Windows 10
Kompilator: C++Builder 10.2 Tokyo
TMS Components Pack
Gadu Gadu: 0
    WindowsChrome

Re: Subiekt GT Sfera

Nowy postprzez polymorphism » środa, 18 kwietnia 2018, 11:06

Z tego, co piszą na stronie, do komunikacji wykorzystywane jest OLE Automation. Być może jest w VCL-u jakaś klasa do obsługi ów mechanizmu, wtedy wystarczy mieć opis wszystkich klas udostępnionych przez developera Subiekta GT.


Możesz być hardcorem i rzeźbić w czystym COM używając interfejsu IDispatch i typu VARIANT.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2177
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 203
System operacyjny: Windows 7 Pro
Windows 8.1
Linux Mint 19
Kompilator: Visual Studio 2015 Community
CodeLite (MinGW)
MSYS2 (MinGW, clang)
g++
Gadu Gadu: 0
    Windows 7Firefox

Re: Subiekt GT Sfera

Nowy postprzez lukagrom » środa, 18 kwietnia 2018, 15:51

Można spróbować wykorzystać metody Variant::CreateObject, lub Varian::GetActiveObject w celu sprawdzenia, czy w ogóle Subiekt jest "widoczny" dla C++ Buildera (zakładając wykorzystywany OLE Aut.)
Całoś wykorzystuje bibliotekę -
Kod: Zaznacz cały
#include <ComObj.hpp>

Przykładowe szukanie Subiekta:

KOD cpp:     UKRYJ  
Variant testSubiekt;
testSubiekt=NULL;
 try
 {
 try
 {
  Variant testSubiekt=Variant::CreateObject("SubiektGT.Application"); //Tutaj dla CreateObject musisz sie wywiedziec jak Subiekt jest definiowany nazwa w OLE.  
  testSubiekt.OlePropertySet("Vsible",true);
  testSubiekt.OlePropertyGet("Workbooks").OleProcedure("Add");
 }
 catch(EOleSysError *info_bledu)
 {
  Label1->Caption="Nie mozna polaczyc sie z Subiektem : "+info_bledu->Message;
 }
 catch(...)
 {
  Label1->Caption="Blad niezdefiniowany";
 }
 }
 __finally
 {
  testSubiekt=Unassigned;
 }
}

 
Avatar użytkownika
lukagrom
Homos antropiczny
Homos antropiczny
 
Posty: 73
Dołączył(a): wtorek, 1 stycznia 2013, 14:54
Podziękował : 7
Otrzymał podziękowań: 4
System operacyjny: Windows Vista
Kompilator: C++ Builder 10.1 Starter
Gadu Gadu: 0
    Windows VistaChrome

Re: Subiekt GT Sfera

Nowy postprzez Mironas » środa, 2 maja 2018, 09:51

Dziękuję za odpowiedzi.

Dla potomnych i zainteresowanych - krótka instrukcja dla C++Buildera.
Przygotowanie aplikacji:
KOD cpp:     UKRYJ  
// Pliki nagłówkowe
#include <ComObj.hpp>
#include <InsERT_TLB.h>

// Własne definicje
#define InsERT Insert_tlb

// Typy wyliczeniowe
enum {VBFalse=0, VBTrue=-1};          // Wartości dla typu VARIANT_BOOL

// Dodać do projektu
C:\Users\xxxxxxx\Documents\RAD Studio\8.0\Imports\InsERT_TLB.cpp
 


Otwarcie Subiekta:
KOD cpp:     UKRYJ  
  // Obiekt 'GT'
  InsERT::GTPtr oGT = CreateOleObject("InsERT.GT");

  // Obiekt 'Dodatki'
  //InsERT::DodatkiPtr oDodatki = CreateOleObject("InsERT.Dodatki");

  // Parametry połączenia
  oGT->Autentykacja     = AutentykacjaEnum::gtaAutentykacjaMieszana;
  oGT->Produkt          = ProduktEnum::gtaProduktSubiekt;
  oGT->Serwer           = L"KOMPUTER\\SQLEXPRESS";
  oGT->Uzytkownik       = L"sa";
  oGT->UzytkownikHaslo  = L"************";
  //oGT->UzytkownikHaslo  = oDodatki->Szyfruj(L"************");    // Alternatywnie
  oGT->Baza             = L"Podmiot01";
  oGT->Operator         = L"Szef";
  oGT->OperatorHaslo    = L"";
  //oGT->OperatorHaslo    = oDodatki->Szyfruj(L"");       // Alternatywnie

  InsERT::SubiektPtr oSubiekt = oGT->Uruchom(UruchomDopasujEnum::gtaUruchomDopasuj, UruchomEnum::gtaUruchom);
  oSubiekt->Okno->Widoczne = VBTrue;      // VARIANT_BOOL:
 


Oczywiście można bez definiowania
#define InsERT Insert_tlb
i w kodzie używać np Insert_tlb::GTPtr ale tak mniej czytelnie (moim zdaniem) i niezgodne z przykładami w dokumentacji.
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 437
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 21
Otrzymał podziękowań: 62
System operacyjny: Windows 10
Kompilator: C++Builder 10.2 Tokyo
TMS Components Pack
Gadu Gadu: 0
    WindowsChrome


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość

cron