Avatar billede koonz Nybegynder
03. maj 2004 - 11:04 Der er 1 løsning

DLL/COM/OLE Problemer

Jeg havde postet dette sps før, men det er åbenbart forsvundet !!


Jeg har aldrig rodet med DLL før, men har nu fået en aktuelt problem.
Jeg har fået en excel fil, som bruger den DLL, jeg også har importeret
i D7.
I Excel ser koden ud som følgende:

Public Sub StartComm()
 
  On Error Resume Next
 
  ' Zuweisung der einzelnen Objekte
  Set oTask = New RainbowState
  Set oSapro = New RainbowSrv
  Set oLoad = New RainbowLoader
  Set oOBJH = New RainbowObjHandler
  'Set oServerIP = New RAINBOWIPLib.RainbowSrv
 
  Dim InterfaceTyp As Variant
 
  InterfaceTyp = Interface
  'Definierung der Schnittstelle
  'oSapro.Conf.SetInterfaceType InterfaceTyp  ' Interface
  If InterfaceTyp = "RainbowSerSrv.CommModule01" Or InterfaceTyp =
"RainbowSerSrv.CommModule02" Then
      oSapro.Conf.SetInterfaceType InterfaceTyp
      oSapro.Conf.SetInterfacePar "57600,8,2,N,1" 'Physikalische
eigenschaften
      oSapro.Conf.SetTargetType ControllerType
      oTask.SetInterface oSapro
      oLoad.SetInterface oSapro
      oOBJH.SetInterface oSapro
      'oServerIP.SetInterface oSapro
  End If
----------------------------------------

Det er RainbowSrv jeg skal have fat i, og starte med at sætte
kommunikationen op.
Linien se sådan ud i excel :

oSapro.Conf.SetInterfaceType InterfaceTyp

I delphi placerer jeg den "komponent" jeg har importeret, og skriver

RainbowSrv1.conf. Efter dette kan jeg ikke få "SetInterface" funktionen frem, og når jeg
skriver det manuelt giver Delphi fejl ved compilering.

Når jeg åbner den TLB fil, jeg har fået lavet efter import, ser jeg
bla.
følgende :

// *********************************************************************//
// Interface: ISaproSerSrv
// Flags:    (4416) Dual OleAutomation Dispatchable
// GUID:      {EA302EDD-8768-11D2-8E33-006008727C0A}
// *********************************************************************//
ISaproSerSrv = interface(IDispatch)
  ['{EA302EDD-8768-11D2-8E33-006008727C0A}']
  procedure GetVersion(var Version: OleVariant); safecall;
  procedure GetMajorVersion(var Number: OleVariant); safecall;
  procedure GetMinorVersion(var Number: OleVariant); safecall;
  function Get_Conf: IDispatch; safecall;
  property Conf: IDispatch read Get_Conf; end;

~En masse andet kode~

// *********************************************************************//
// Interface: ISaproConf // Flags:    (4416) Dual OleAutomation Dispatchable
// GUID:      {3155D9F0-8463-11D2-83A2-00600872723B}
// *********************************************************************//
ISaproConf = interface(IDispatch)
  ['{3155D9F0-8463-11D2-83A2-00600872723B}']
  procedure SetInterfaceType(const InterfaceType: WideString);
safecall;
  procedure SetInterfacePar(const InterfacePar: WideString);
safecall;
  procedure GetInterfaceType(var Value: OleVariant); safecall;
  procedure GetInterfacePar(var Value: OleVariant); safecall;
  procedure SetTargetType(Value: Integer); safecall;
  procedure GetTargetType(var Value: OleVariant); safecall;
end;

// *********************************************************************//
// DispIntf: ISaproConfDisp
// Flags:    (4416) Dual OleAutomation Dispatchable
// GUID:      {3155D9F0-8463-11D2-83A2-00600872723B}
// *********************************************************************//
ISaproConfDisp = dispinterface
  ['{3155D9F0-8463-11D2-83A2-00600872723B}']
  procedure SetInterfaceType(const InterfaceType: WideString);
dispid 1;
  procedure SetInterfacePar(const InterfacePar: WideString); dispid
2;
  procedure GetInterfaceType(var Value: OleVariant); dispid 3;
  procedure GetInterfacePar(var Value: OleVariant); dispid 4;
  procedure SetTargetType(Value: Integer); dispid 5;
  procedure GetTargetType(var Value: OleVariant); dispid 6;
end;

Nogen genier der kan gennemskue hvor jeg går galt i byen ?

Jeg tror det er noget med at access'e ISaproConf = interface(IDispatch)

Med venlig hilsen

Ulrik
Avatar billede koonz Nybegynder
05. maj 2004 - 08:31 #1
Jeg lukker....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester