LuaCOM - more questionsby Terry Bayne Jan 31, 2006; 09:26pm :: Rate this Message: - Use ratings to moderate (?) Reply | Reply to Author | View Threaded | Link to this Message Good Morning. I've started using LuaCOM and I have a few questions. I am not a COM guru so please excuse my ignorance. I am trying to build on the examples from the LuaCOM documentation, and in doing so I have no problem opening up Microsoft Word. The problem comes when I try to create a new document - most of the examples on the web do something like this: word = luacom.CreateObject("Word.Application") assert(word) word.visible = true -- Works good up to this point doc = word.Documents.Add() The last statement fails. I've tried passing parameters, even tried this: word = luacom.CreateObject("Word.Application") mt = luacom.CreateObject("type.missing") assert(word) word.visible = true -- Works good up to this point doc = word.Documents.Add(mt,mt,mt,mt) All this gets me is a type mismatch error. Any ideas? Thanks Terry | |
Re: LuaCOM - more questionsby Fabio Mascarenhas Jan 31, 2006; 10:08pm :: Rate this Message: - Use ratings to moderate (?) Reply | Reply to Author | View Threaded | Link to this Message Hi, Terry, This: > doc = word.Documents.Add() should be this: doc = word.Documents:Add() Method calls use ':'. Reading and writing properties use '.'. -- Fabio Mascarenhas On 1/31/06, Terry Bayne <tbayne@...> wrote: > Good Morning. > > I've started using LuaCOM and I have a few questions. I am not a COM guru so please excuse my ignorance. >when I try to create a new document - most of the examples on the web do >something like this: > > word = luacom.CreateObject("Word.Application") > assert(word) > word.visible = true > -- Works good up to this point > doc = word.Documents.Add() > > The last statement fails. I've tried passing parameters, even tried this: > All this gets me is a type mismatch error. | |
LuaCOM - more questionsby Michael Cumming Jan 31, 2006; 11:01pm :: Rate this Message: - Use ratings to moderate (?) Reply | Reply to Author | View Threaded | Link to this Message Terry, Its doc = word.Documents:Add() note the ':' not '.' Mike | |
Re: LuaCOM - more questionsby Terry Bayne Feb 01, 2006; 12:10am :: Rate this Message: - Use ratings to moderate (?) Reply | Reply to Author | View Threaded | Link to this Message Fabio, Thanks for spotting that, but still getting a type mismatch error: LUA: Calling word.Documents:Add Error executing lua code: [COM error:(E:\Blackdog\kibble\trunk\luacom\src\library\tLuaCOM.cpp,403):Type mismatch.] Here is the lua code I am running: word = luacom.CreateObject("Word.Application") MT = luacom.CreateObject("type.missing") assert(word)word.visible = true print("Calling word.Documents:Add") doc = word.Documents:Add() print("Back from Documents:Add()") Any ideas? Also I have tried passing MT to the Add() call like so: doc = word.Documents:Add(MT,MT,MT,MT) Thanks On Tue, 31 Jan 2006 12:08:11 -0200, Fabio Mascarenhas wrote: >> Hi, Terry, >> >> This: >> >>>> doc = word.Documents.Add() >>>> >> should be this: >> >> doc = word.Documents:Add() >> >> Method calls use ':'. Reading and writing properties use '.'. >> >> -- >> Fabio Mascarenhas >> >> On 1/31/06, Terry Bayne <tbayne@...> wrote: >> >>>> Good Morning. >>>> >>>> I've started using LuaCOM and I have a few questions. I am not >>>> a COM guru so please excuse my ignorance. >>>> when I try to create a new document - most of the examples on >>>> the web >>>> >> do >something like this: >> >>>> word = luacom.CreateObject("Word.Application") assert(word) >>>> word.visible = true -- Works good up to this point doc = >>>> word.Documents.Add() >>>> >>>> The last statement fails. I've tried passing parameters, even >>>> tried this: All this gets me is a type mismatch error. | |
RE: LuaCOM - more questionsby Ignacio Burgueño Feb 01, 2006; 01:16am :: Rate this Message: - Use ratings to moderate (?) Reply | Reply to Author | View Threaded | Link to this Message Hi Terry. What version of LuaCOM are you using? Just tested your sample code using luaCom 1.2 and Office 2003 and it worked fine. > -----Original Message----- > From: lua-bounces@... > [mailto:lua-bounces@...] On Behalf Of Terry Bayne > Sent: Tuesday, January 31, 2006 1:15 PM > To: Lua list > Subject: Re: LuaCOM - more questions > > Fabio, > > Thanks for spotting that, but still getting a type mismatch error: > > LUA: Calling word.Documents:Add > Error executing lua code: [COM > error:(E:\Blackdog\kibble\trunk\luacom\src\library\tLuaCOM.cpp > ,403):Type mismatch.] > > Here is the lua code I am running: > > word = luacom.CreateObject("Word.Application") > MT = luacom.CreateObject("type.missing") > assert(word)word.visible = true > print("Calling word.Documents:Add") > doc = word.Documents:Add() > print("Back from Documents:Add()") > > Any ideas? > > Also I have tried passing MT to the Add() call like so: > > doc = word.Documents:Add(MT,MT,MT,MT) > > Thanks | |
RE: LuaCOM - more questionsby Terry Bayne Feb 01, 2006; 01:41am :: Rate this Message: - Use ratings to moderate (?) Reply | Reply to Author | View Threaded | Link to this Message Ignacio, Hi, thank you for taking the time to look at this. I am using LUACom 1.3 with Office 2003 and LUA 5.0.2. Terry On Tue, 31 Jan 2006 15:12:24 -0300, Ignacio Burgueño wrote: >> Hi Terry. What version of LuaCOM are you using? Just tested your >> sample code using luaCom 1.2 and Office 2003 and it worked fine. >> >> >>>> -----Original Message----- >>>> From: lua-bounces@... >>>> [mailto:lua-bounces@...] On Behalf Of Terry >>>> Bayne Sent: Tuesday, January 31, 2006 1:15 PM To: Lua list >>>> Subject: Re: LuaCOM - more questions >>>> >>>> Fabio, >>>> >>>> Thanks for spotting that, but still getting a type mismatch >>>> error: >>>> >>>> LUA: Calling word.Documents:Add >>>> Error executing lua code: [COM >>>> error:(E:\Blackdog\kibble\trunk\luacom\src\library\tLuaCOM.cpp >>>> ,403):Type mismatch.] >>>> >>>> Here is the lua code I am running: >>>> >>>> word = luacom.CreateObject("Word.Application") >>>> MT = luacom.CreateObject("type.missing") >>>> assert(word)word.visible = true >>>> print("Calling word.Documents:Add") >>>> doc = word.Documents:Add() >>>> print("Back from Documents:Add()") >>>> >>>> Any ideas? >>>> >>>> Also I have tried passing MT to the Add() call like so: >>>> >>>> doc = word.Documents:Add(MT,MT,MT,MT) >>>> >>>> Thanks | |
RE: LuaCOM - more questionsby Ignacio Burgueño Feb 01, 2006; 05:04am :: Rate this Message: - Use ratings to moderate (?) Reply | Reply to Author | View Threaded | Link to this Message Well. I compiled a debug version of luacom 1.3 (as of 2005-02-28) and it does not work. Indeed, the code fails when calling the Add method from the Word.Document class Its signature is: HRESULT Add( [in, optional] VARIANT* Template, [in, optional] VARIANT* NewTemplate, [in, optional] VARIANT* DocumentType, [in, optional] VARIANT* Visible, [out, retval] Document** prop); I don't know if luacom 1.3 introduced a new approach to handle optional parameters, but I think that the problem lies in the function tLuaCOMTypeHandler::fillDispParams At line 943, there's this code: else if(!byref) // here we filter the optional out params (treated below) { // assumes that a parameter is expected but has not been found var.vt = VT_ERROR; var.scode = DISP_E_PARAMNOTFOUND; } if(!byref || var.vt == VT_ERROR) { VariantCopy(&r_rgvarg[i], &var); VariantClear(&var); } byref is true (it was set at line 911), and the parameter is [in] but it seems that that case isn't handled properly. It should pass a Variant with VT_ERROR and DISP_E_PARAMNOTFOUND. I'm not quite sure of how to fix this properly. Changing line 943 to this works fine: else if(byref) // here we filter the optional out params (treated below) But I didn't check if that breaks other calls. Regards, Ignacio Burgueño Desarrollo - Tecnolink S.A. ignacio@... Tel: +598 2 614-1003 www.inConcertCC.com > -----Original Message----- > From: lua-bounces@... > [mailto:lua-bounces@...] On Behalf Of Terry Bayne > Sent: Tuesday, January 31, 2006 2:45 PM > To: Lua list > Subject: RE: LuaCOM - more questions > > Ignacio, > > Hi, thank you for taking the time to look at this. I am > using LUACom 1.3 with Office 2003 and LUA 5.0.2. > > Terry > > On Tue, 31 Jan 2006 15:12:24 -0300, Ignacio Burgueño wrote: > >> Hi Terry. What version of LuaCOM are you using? Just tested your > >> sample code using luaCom 1.2 and Office 2003 and it worked fine. > >> > >> > >>>> -----Original Message----- > >>>> From: lua-bounces@... > >>>> [mailto:lua-bounces@...] On Behalf Of Terry > >>>> Bayne Sent: Tuesday, January 31, 2006 1:15 PM To: Lua list > >>>> Subject: Re: LuaCOM - more questions > >>>> > >>>> Fabio, > >>>> > >>>> Thanks for spotting that, but still getting a type mismatch > >>>> error: > >>>> > >>>> LUA: Calling word.Documents:Add > >>>> Error executing lua code: [COM > >>>> error:(E:\Blackdog\kibble\trunk\luacom\src\library\tLuaCOM.cpp > >>>> ,403):Type mismatch.] > >>>> > >>>> Here is the lua code I am running: > >>>> > >>>> word = luacom.CreateObject("Word.Application") > >>>> MT = luacom.CreateObject("type.missing") > >>>> assert(word)word.visible = true > >>>> print("Calling word.Documents:Add") > >>>> doc = word.Documents:Add() > >>>> print("Back from Documents:Add()") > >>>> > >>>> Any ideas? > >>>> > >>>> Also I have tried passing MT to the Add() call like so: > >>>> > >>>> doc = word.Documents:Add(MT,MT,MT,MT) > >>>> > >>>> Thanks > > > > | |
RE: LuaCOM - more questionsby Shaun-7 Feb 01, 2006; 05:23am :: Rate this Message: - Use ratings to moderate (?) Reply | Reply to Author | View Threaded | Link to this Message > I don't know if luacom 1.3 introduced a new approach to handle optional > parameters, but I think that the problem lies in the function > tLuaCOMTypeHandler::fillDispParams > At line 943, there's this code: I had exactly the same problem and implemented a fix exactly like you suggested. I sent an email to the maintainer, Fabio Mascarenhas, at the time, but don't think I ever heard anything back. Cheers, Shaun | |
RE: LuaCOM - more questionsby Terry Bayne Feb 01, 2006; 07:43am :: Rate this Message: - Use ratings to moderate (?) Reply | Reply to Author | View Threaded | Link to this Message That did seem to solve the problem! Thanks to both you and Shaun for your help! Terry On Tue, 31 Jan 2006 19:07:52 -0300, Ignacio Burgueño wrote: >> Well. I compiled a debug version of luacom 1.3 (as of 2005-02-28) >> and it does not work. >> Indeed, the code fails when calling the Add method from the >> Word.Document class Its signature is: >> >> HRESULT Add( >> [in, optional] VARIANT* Template, >> [in, optional] VARIANT* NewTemplate, >> [in, optional] VARIANT* DocumentType, >> [in, optional] VARIANT* Visible, >> [out, retval] Document** prop); >> >> I don't know if luacom 1.3 introduced a new approach to handle >> optional parameters, but I think that the problem lies in the >> function tLuaCOMTypeHandler::fillDispParams At line 943, there's >> this code: >> >> else if(!byref) // here we filter the optional out params (treated >> below) { >> // assumes that a parameter is expected but has not been found >> >> var.vt = VT_ERROR; >> var.scode = DISP_E_PARAMNOTFOUND; >> } >> >> if(!byref || var.vt == VT_ERROR) >> { >> VariantCopy(&r_rgvarg[i], &var); >> VariantClear(&var); >> } >> >> byref is true (it was set at line 911), and the parameter is [in] >> but it seems that that case isn't handled properly. It should pass >> a Variant with VT_ERROR and DISP_E_PARAMNOTFOUND. I'm not quite >> sure of how to fix this properly. Changing line 943 to this works >> fine: >> else if(byref) // here we filter the optional out params (treated >> below) But I didn't check if that breaks other calls. >> >> Regards, >> >> Ignacio Burgueño >> Desarrollo - Tecnolink S.A. >> ignacio@... >> >> Tel: +598 2 614-1003 >> www.inConcertCC.com >> >> >>>> -----Original Message----- >>>> From: lua-bounces@... >>>> [mailto:lua-bounces@...] On Behalf Of Terry >>>> Bayne Sent: Tuesday, January 31, 2006 2:45 PM To: Lua list >>>> Subject: RE: LuaCOM - more questions >>>> >>>> Ignacio, >>>> >>>> Hi, thank you for taking the time to look at this. I am using >>>> LUACom 1.3 with Office 2003 and LUA 5.0.2. >>>> >>>> Terry >>>> >>>> On Tue, 31 Jan 2006 15:12:24 -0300, Ignacio Burgueño wrote: >>>> >>>>>> Hi Terry. What version of LuaCOM are you using? Just tested >>>>>> your sample code using luaCom 1.2 and Office 2003 and it >>>>>> worked fine. >>>>>> >>>>>> >>>>>>>> -----Original Message----- >>>>>>>> From: lua-bounces@... >>>>>>>> [mailto:lua-bounces@...] On Behalf Of >>>>>>>> Terry Bayne Sent: Tuesday, January 31, 2006 1:15 PM To: >>>>>>>> Lua list Subject: Re: LuaCOM - more questions >>>>>>>> >>>>>>>> Fabio, >>>>>>>> >>>>>>>> Thanks for spotting that, but still getting a type >>>>>>>> mismatch error: >>>>>>>> >>>>>>>> LUA: Calling word.Documents:Add >>>>>>>> Error executing lua code: [COM >>>>>>>> error:(E:\Blackdog\kibble\trunk\luacom\src\library\tLuaCOM.cpp ,403): >>>>>>>> Type mismatch.] >>>>>>>> >>>>>>>> Here is the lua code I am running: >>>>>>>> >>>>>>>> word = luacom.CreateObject("Word.Application") >>>>>>>> MT = luacom.CreateObject("type.missing") >>>>>>>> assert(word)word.visible = true >>>>>>>> print("Calling word.Documents:Add") >>>>>>>> doc = word.Documents:Add() >>>>>>>> print("Back from Documents:Add()") >>>>>>>> >>>>>>>> Any ideas? >>>>>>>> >>>>>>>> Also I have tried passing MT to the Add() call like so: >>>>>>>> >>>>>>>> doc = word.Documents:Add(MT,MT,MT,MT) >>>>>>>> >>>>>>>> Thanks |
订阅:
博文评论 (Atom)
没有评论:
发表评论