반응형
Haskell을 사용한 Excel 자동화로 세그먼트 결함 발생
나는 다음 스크립트로 엑셀을 작동시킬 수 있습니다.그러나 ghci(7.4.1)를 실행할 때 분할 오류가 발생합니다.
지금부터 어디를 검색해야 할지 모르겠습니다.라인을 제거해도 이 오류가 발생하지 않습니다.
workSheets <- workBook # propertyGet_0 "Worksheets"
여기 코드가 있습니다.뭔가를 잊어버린 것 같아요.여기서 com.hs의 소스 코드를 읽었는데, 아무런 단서가 되지 않습니다.
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]
Gonzalez의 조언으로 편집해보니 디버깅을 해보았지만 아무런 정보도 나오지 않았습니다.손으로 ghci로 코드를 시도해보니 유죄인 당사자가 릴리스 기능인 것 같습니다.
다음 ingci를 입력했을 때 분할 오류가 발생했습니다.
*Main> coInitialize
*Main> pExl <- createObjExl
*Main> release pExl
0
이제 "pExl"을 누르면 참조가 있습니다.Null로 설정해야 하지 않습니까?
*Main> pExl
<interface pointer = 0x020844cc>
*Main> coUnInitialize
*Main> :q
leaving Ghci
Segmentation Fault/access violation ...
당신은 아마도 전화할 것입니다.workSheets
정적 함수 내의 메서드입니다.한 번 빼보세요.
또는 '워크시트'의 데이터 유형을 명시적으로 선언해 보셨습니까?
WorkSheets :: Int -> Int
또는 (임의 유형이어야 함).
언급URL : https://stackoverflow.com/questions/14537516/excel-automation-with-haskell-gives-a-seg-fault
반응형
'source' 카테고리의 다른 글
모듈에서 __getattr__ (0) | 2023.05.02 |
---|---|
Makefile targets에서 Bash 구문을 사용하려면 어떻게 해야 합니까? (0) | 2023.04.27 |
ASP에서 divs를 위한 코드 뒤에 있는 파일에서 CSS 스타일을 어떻게 수정합니까?NET? (0) | 2023.04.27 |
ASP.NET 번들최소화 비활성화 방법 (0) | 2023.04.27 |
스위프트에서 willSet과 doSet의 목적은 무엇입니까? (0) | 2023.04.27 |