Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   OLE Anbindung mi David3 (https://www.delphipraxis.net/207231-ole-anbindung-mi-david3.html)

Supergr 5. Mär 2021 10:03

OLE Anbindung mi David3
 
Ich versuche mit Delphi per OLE auf DAVID zu zugreifen.
Beide Type-Libraries DvApi32_TLB und InfoCenter_TLB sind eingebunden.

Die DDL Version ist sowohl in meinem Programm als auch im DAVID Verzeichnis gleich.

Hier der einfach Codeschnipsel. Die Variable TobitApp wird anscheinend richtig initialisiert, weil ich hier auch TobitApp.VIntern korrekt abfragen kann.

Code:
 ...
var
  TobitApp: IApplication; //DVapi32_TLB.DavidAPI;
  TobitAcc: DVapi32_TLB.Account;
begin
   TobitApp := CreateOLEObject('DVOBJAPILIB.DvISEAPI') as IApplication;

   TobitAcc := TobitApp.GetAccount('DAVID', '*******', '*******');

// oder

   TobitAcc := TobitApp.LogOn('DAVID', Unassigned, Unassigned, Unassigned, Unassigned, 'AUTH');
...
Die Funktion LogOn oder GetAccount für in allen Fällen immer zum Fehler "Nicht initialisiertes Objekt".
Kann mir jemand einen Tip geben wie ich hier weiterkomme?

Danke!

TiGü 5. Mär 2021 11:07

AW: OLE Anbindung mi David3
 
Was sagt der Hersteller dazu?

https://tobit.software/support
https://david3.de/forum
https://david3.dev/

gmc616 23. Sep 2021 19:49

AW: OLE Anbindung mi David3
 
... weil ich grad über diesen Thread stolpere , auf der Suche nach einem ähnlichen Thema.
Meine "Fast-Connect-Methode":
Delphi-Quellcode:
var
  goApp: IApplication;
  goAccount : Account = nil;
  g_hr : HResult;
  g_v : OleVariant;

function fktDV_FastConnect () : boolean;
var
  bRet : boolean;
begin

  if goAccount = nil then
  begin
    bRet := false;

    g_hr := CLSIDFromString('DVOBJAPILib.DvISEAPI', gDVAPP_clsid);
    if not FAILED(g_hr) then
    begin
      g_hr := CoCreateInstance(gDVAPP_clsid, Nil, CLSCTX_INPROC_SERVER,IID_IApplication, goApp);
      if not FAILED(g_hr) then
      begin
        VariantInit(g_v);
        OleCheck( g_hr );

        try
          goAccount:=goApp.Logon (g_v, g_v, g_v, g_v, g_v, 'AUTH');
          bRet := True;
        except
          bRet := false;
        end;

      end;
    end;
  end;
  result := bRet;
end;
... funktioniert seit David-7 bis David-13.

Hoffe es hilft.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz