OleAutoObject
Posted: Fri Oct 12, 2018 3:57 pm
Hi all,
I've a problem trying to call a X# DLL from a VO program.
Using A) example it works, but using B) it return an error similar to "Impossible to find the member" (Impossibile trovare membro)
Thanks for you help.
Gianluca
*********************************************************************
*********************************************************************
CASE A)
*********************************************************************
*********************************************************************
LOCAL o as OleAutoObject
local sString as string
o := OLEAutoObject{"GDOfatCOM.GDOcomXML"}
IF o:fInit
if o:ExportFatturaXML("C:TEST","00000003.XML","","FA","2018","3","")
sString := "OK"
endif
InfoBox{,"Fine",sString}:Show()
o:Destroy()
CollectForced()
else
InfoBox{,"Fine","KO"}:Show()
ENDIF
*********************************************************************
*********************************************************************
CASE B)
*********************************************************************
*********************************************************************
local oFAT as GDOfatCOM
local sString as string
oFAT := GDOfatCOM{}
if oFAT:ExportFatturaXML("C:TEST","00000003.XML","","FA","2018","3","")
sString := "OK"
endif
InfoBox{,"Fine",sString}:Show()
return nil
CLASS GDOfatCOM INHERIT OLEAutoObjectEx
METHOD Init(ObjID, fROTCHECK) CLASS GDOfatCOM
self:cProgID := "GDOfatCOM.GDOcomXML"
self:cClsID := "{1B79D018-8F36-4BA4-84DB-CA6C8C9A73E8}"
self:cIID := "{288091BD-E7B5-4436-8660-6BAB31F9ED81}"
SUPER:Init(ObjID, 0, .T., fRotCheck)
self:_dwFuncs := 2
self:_dwVars := 0
RETURN self
METHOD ExportFatturaXML(;
sPath,; // AS STRING
sNomeFile,; // AS STRING
sNrFil,; // AS STRING
sTR,; // AS STRING
sAnno,; // AS STRING
sNumdoc,; // AS STRING
sSeriedoc; // AS STRING
) CLASS GDOfatCOM
LOCAL oMethod as cOleMethod
LOCAL uRetValue as USUAL
oMethod := cOleMethod{}
oMethod:symName := String2Symbol("ExportFatturaXML")
oMethod:iMemberid := 1
oMethod:wInvokeKind := INVOKE_METHOD
oMethod:nParams := 7
oMethod:lNamedArgs := true
oMethod:cParamTypes := VTS_BSTRW + VTS_BSTRW + VTS_BSTRW + VTS_BSTRW + VTS_BSTRW + VTS_BSTRW + VTS_BSTRW
oMethod:bRetType := VT_BOOL
uRetValue := self:__Invoke(oMethod, DWORD(_bp+16),PCount())
RETURN (uRetValue)
METHOD test() CLASS GDOfatCOM
LOCAL oMethod as cOleMethod
LOCAL uRetValue as USUAL
oMethod := cOleMethod{}
oMethod:symName := String2Symbol("Test")
oMethod:iMemberid := 2
oMethod:wInvokeKind := INVOKE_METHOD
oMethod:bRetType := VT_BOOL
uRetValue := self:__Invoke(oMethod, DWORD(_bp+16),PCount())
RETURN (uRetValue)
*********************************************************************
*********************************************************************
X#
*********************************************************************
*********************************************************************
USING System
USING System.Collections.Generic
USING System.Linq
USING System.Text
using GDOfatXML
USING System.Windows.Forms
Using IniLib
USING MySql
USING MySql.Data
USING MySql.Data.Types
USING MySql.Data.MySqlClient
USING system.Threading
Using GDOStaticLibrary
using System.Runtime.InteropServices
BEGIN NAMESPACE GDOfatCOM
[ComVisible(true)];
[Guid("1B79D018-8F36-4BA4-84DB-CA6C8C9A73E8")];
[ClassInterface(ClassInterfaceType.None)];
[ProgId("GDOfatCOM.GDOcomXML")];
CLASS GDOcomXML
public CONSTRUCTOR() STRICT
RETURN
public virtual method ExportFatturaXML(sPath as string, sNomeFile as string, sNrFil as string, sTR as string, sAnno as string, sNumdoc as string, sSeriedoc as string ) as logic STRICT
local sNomeFileINI as string
local lRetVal := false as logic
local oFatt as FatturaXML
*messagebox.Show(sPath+"#"+sNomeFile+"#"+sNrFil+"#"+sTR+"#"+sAnno+"#"+sNumdoc+"#"+sSeriedoc)
Thread.CurrentThread.CurrentCulture := System.Globalization.CultureInfo.InvariantCulture
*sNomeFileINI := System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly():Location) + "GDOfatXML.INI"
sNomeFileINI := "GDOfatXML.INI"
*messagebox.Show( sNomeFileINI )
Globals.oIniFile := IniFile{sNomeFileINI}
Globals.sServer := Globals.oIniFile:Read("Host","XMYSQL")
Globals.sPort := Globals.oIniFile:Read("Port","XMYSQL")
Globals.sUser := Globals.oIniFile:Read("User","XMYSQL")
Globals.sPwd := Globals.oIniFile:Read("Pswd","XMYSQL")
Globals.sDataBase := Globals.oIniFile:Read("DB","XMYSQL")
IF !Globals.Connetti()
MessageBox.Show("Impossibile connettersi al server")
else
lRetVal := true
oFatt := FatturaXML{}
oFatt:GetFatturaGDOfat("","FA","2018",convert.ToInt16(sNumdoc),"")
oFatt:WriteFatturaPA(sPath, sNomeFile)
endif
return lRetVal
public virtual method Test() as logic
return true
END CLASS
END NAMESPACE
********************************************************************************
********************************************************************************
USING System
USING System.Collections.Generic
USING System.Text
using System.Runtime.InteropServices
BEGIN NAMESPACE GDOfatCOM
[ComVisible(true)];
[Guid("288091BD-E7B5-4436-8660-6BAB31F9ED81")];
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)];
interface iGDOcomXML
[DispId(1)];
method ExportFatturaXML(sPath as string, sNomeFile as string, sNrFil as string, sTR as string, sAnno as string, sNumdoc as string, sSeriedoc as string ) as logic
[DispId(2)];
method Test() as logic
end interface
END NAMESPACE // GDOfatCOM
**************************************************************************************
**************************************************************************************
I've a problem trying to call a X# DLL from a VO program.
Using A) example it works, but using B) it return an error similar to "Impossible to find the member" (Impossibile trovare membro)
Thanks for you help.
Gianluca
*********************************************************************
*********************************************************************
CASE A)
*********************************************************************
*********************************************************************
LOCAL o as OleAutoObject
local sString as string
o := OLEAutoObject{"GDOfatCOM.GDOcomXML"}
IF o:fInit
if o:ExportFatturaXML("C:TEST","00000003.XML","","FA","2018","3","")
sString := "OK"
endif
InfoBox{,"Fine",sString}:Show()
o:Destroy()
CollectForced()
else
InfoBox{,"Fine","KO"}:Show()
ENDIF
*********************************************************************
*********************************************************************
CASE B)
*********************************************************************
*********************************************************************
local oFAT as GDOfatCOM
local sString as string
oFAT := GDOfatCOM{}
if oFAT:ExportFatturaXML("C:TEST","00000003.XML","","FA","2018","3","")
sString := "OK"
endif
InfoBox{,"Fine",sString}:Show()
return nil
CLASS GDOfatCOM INHERIT OLEAutoObjectEx
METHOD Init(ObjID, fROTCHECK) CLASS GDOfatCOM
self:cProgID := "GDOfatCOM.GDOcomXML"
self:cClsID := "{1B79D018-8F36-4BA4-84DB-CA6C8C9A73E8}"
self:cIID := "{288091BD-E7B5-4436-8660-6BAB31F9ED81}"
SUPER:Init(ObjID, 0, .T., fRotCheck)
self:_dwFuncs := 2
self:_dwVars := 0
RETURN self
METHOD ExportFatturaXML(;
sPath,; // AS STRING
sNomeFile,; // AS STRING
sNrFil,; // AS STRING
sTR,; // AS STRING
sAnno,; // AS STRING
sNumdoc,; // AS STRING
sSeriedoc; // AS STRING
) CLASS GDOfatCOM
LOCAL oMethod as cOleMethod
LOCAL uRetValue as USUAL
oMethod := cOleMethod{}
oMethod:symName := String2Symbol("ExportFatturaXML")
oMethod:iMemberid := 1
oMethod:wInvokeKind := INVOKE_METHOD
oMethod:nParams := 7
oMethod:lNamedArgs := true
oMethod:cParamTypes := VTS_BSTRW + VTS_BSTRW + VTS_BSTRW + VTS_BSTRW + VTS_BSTRW + VTS_BSTRW + VTS_BSTRW
oMethod:bRetType := VT_BOOL
uRetValue := self:__Invoke(oMethod, DWORD(_bp+16),PCount())
RETURN (uRetValue)
METHOD test() CLASS GDOfatCOM
LOCAL oMethod as cOleMethod
LOCAL uRetValue as USUAL
oMethod := cOleMethod{}
oMethod:symName := String2Symbol("Test")
oMethod:iMemberid := 2
oMethod:wInvokeKind := INVOKE_METHOD
oMethod:bRetType := VT_BOOL
uRetValue := self:__Invoke(oMethod, DWORD(_bp+16),PCount())
RETURN (uRetValue)
*********************************************************************
*********************************************************************
X#
*********************************************************************
*********************************************************************
USING System
USING System.Collections.Generic
USING System.Linq
USING System.Text
using GDOfatXML
USING System.Windows.Forms
Using IniLib
USING MySql
USING MySql.Data
USING MySql.Data.Types
USING MySql.Data.MySqlClient
USING system.Threading
Using GDOStaticLibrary
using System.Runtime.InteropServices
BEGIN NAMESPACE GDOfatCOM
[ComVisible(true)];
[Guid("1B79D018-8F36-4BA4-84DB-CA6C8C9A73E8")];
[ClassInterface(ClassInterfaceType.None)];
[ProgId("GDOfatCOM.GDOcomXML")];
CLASS GDOcomXML
public CONSTRUCTOR() STRICT
RETURN
public virtual method ExportFatturaXML(sPath as string, sNomeFile as string, sNrFil as string, sTR as string, sAnno as string, sNumdoc as string, sSeriedoc as string ) as logic STRICT
local sNomeFileINI as string
local lRetVal := false as logic
local oFatt as FatturaXML
*messagebox.Show(sPath+"#"+sNomeFile+"#"+sNrFil+"#"+sTR+"#"+sAnno+"#"+sNumdoc+"#"+sSeriedoc)
Thread.CurrentThread.CurrentCulture := System.Globalization.CultureInfo.InvariantCulture
*sNomeFileINI := System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly():Location) + "GDOfatXML.INI"
sNomeFileINI := "GDOfatXML.INI"
*messagebox.Show( sNomeFileINI )
Globals.oIniFile := IniFile{sNomeFileINI}
Globals.sServer := Globals.oIniFile:Read("Host","XMYSQL")
Globals.sPort := Globals.oIniFile:Read("Port","XMYSQL")
Globals.sUser := Globals.oIniFile:Read("User","XMYSQL")
Globals.sPwd := Globals.oIniFile:Read("Pswd","XMYSQL")
Globals.sDataBase := Globals.oIniFile:Read("DB","XMYSQL")
IF !Globals.Connetti()
MessageBox.Show("Impossibile connettersi al server")
else
lRetVal := true
oFatt := FatturaXML{}
oFatt:GetFatturaGDOfat("","FA","2018",convert.ToInt16(sNumdoc),"")
oFatt:WriteFatturaPA(sPath, sNomeFile)
endif
return lRetVal
public virtual method Test() as logic
return true
END CLASS
END NAMESPACE
********************************************************************************
********************************************************************************
USING System
USING System.Collections.Generic
USING System.Text
using System.Runtime.InteropServices
BEGIN NAMESPACE GDOfatCOM
[ComVisible(true)];
[Guid("288091BD-E7B5-4436-8660-6BAB31F9ED81")];
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)];
interface iGDOcomXML
[DispId(1)];
method ExportFatturaXML(sPath as string, sNomeFile as string, sNrFil as string, sTR as string, sAnno as string, sNumdoc as string, sSeriedoc as string ) as logic
[DispId(2)];
method Test() as logic
end interface
END NAMESPACE // GDOfatCOM
**************************************************************************************
**************************************************************************************