SORU
26 Ocak 2013, CUMARTESİ


Haskell ile Excel Otomasyonu seg hatası veriyor.

Aşağıdaki komut ile Excel ateş ederim. Ama ghci (7.4.1) çalıştırdığımda bölümleme hatası var.

Şimdi Arama için nerede bilmiyorum. Ben bu satırı kaldırırsanız, bu hata yok

workSheets <- workBook #  propertyGet_0 "Worksheets"

İşte kod. Olabilir bir şey unuttum. Kaynak com Kanunu okudum.here, ama bana herhangi bir ipucu vermez 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]

EditGonzalez tavsiyesi ile hata ayıklama denedim, ama hiçbir bilgi ortaya çıktı. Ghci elle kod denedim ve suçluyu serbest bırakma fonksiyonu gibi görünüyordu.

Ghci girdim bu, bölümleme hatası var:

*Main> coInitialize
*Main> pExl <- createObjExl
*Main> release pExl
0

Şimdi Eğer "pExl" bir başvuru var. bastığımda Null için ayarlanmış olması gerekmez mi?

*Main> pExl
<interface pointer = 0x020844cc>

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

CEVAP
1 Ocak 2015, PERŞEMBE


Statik bir işlev içinde workSheets yöntem arıyor olabilir. Hareket deneyin.

Ya da, açıkça veri türü bildirmek denediniz mi 'Çalışma'

WorkSheets :: Int -> Int ya da (her ne olmalıdır).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ICON

    ICON

    19 EKİM 2011
  • LiteralMSPaint

    LiteralMSPai

    27 EKİM 2010
  • TheTwistedFrequency

    TheTwistedFr

    26 NİSAN 2010