首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Haskell的Excel Automation出现seg错误

使用Haskell的Excel Automation出现seg错误
EN

Stack Overflow用户
提问于 2013-01-26 21:46:56
回答 1查看 2K关注 0票数 52

我可以使用以下脚本启动Excel。但是在ghci (7.4.1)中,我在运行它时有一个分段错误。

我不知道从哪里开始搜索。如果删除行,则不会出现此错误

代码语言:javascript
复制
workSheets <- workBook #  propertyGet_0 "Worksheets"

下面是代码。可能是我忘了什么。我读了com.hs here的源代码,但它没有给我任何线索。

代码语言:javascript
复制
import System.Win32.Com 
import System.Win32.Com.Automation
--
-- createObjectExcel 
-- coming from Automation.hs and com.hs
--

iidIDispatch_unsafe  = mkIID "{00020400-0000-0000-C000-000000000046}"

createObjExl :: IO (IDispatch ()) 
createObjExl = do
    clsidExcel <- clsidFromProgID "Excel.Application"
    pExl <- coCreateInstance clsidExcel  Nothing LocalProcess iidIDispatch_unsafe
    return pExl


fichierTest2 = "E:/Programmation/haskell/Com/qos1.xls"

main = coRun $ do 
    pExl <- createObjExl
    workBooks <- pExl #  propertyGet_0 "Workbooks"
    workBook <- workBooks #  propertyGet_1 "Open" fichierTest2
    workSheets <- workBook #  propertyGet_0 "Worksheets"

    workBooks # method_1_0 "Close" (0::Int)
    pExl # method_0_0 "Quit"

    mapM release [workSheets,workBook, workBooks, pExl]

根据冈萨雷斯的建议编辑我尝试过调试,但没有出现任何信息。我在ghci中手动尝试了代码,似乎有罪的那一方是释放函数。

当我在ghci中输入这些内容时,我得到了分段错误:

代码语言:javascript
复制
*Main> coInitialize
*Main> pExl <- createObjExl
*Main> release pExl
0

现在,如果我点击"pExl“,我就有一个推荐人。它不应该设置为Null吗?

代码语言:javascript
复制
*Main> pExl
<interface pointer = 0x020844cc>

*Main> coUnInitialize
*Main> :q
leaving Ghci
Segmentation Fault/access violation ...
EN

回答 1

Stack Overflow用户

发布于 2015-01-01 12:45:32

您可以从静态函数中调用workSheets方法。试着把它搬出去。

或者,您是否尝试过显式声明“Worksheets”的数据类型

WorkSheets :: Int -> Int或(不管是什么类型都应该是)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14537516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档