Seite 2 von 2

PureBasic.asm[2482]: dd SM_idispatch error: undefined symbol

Verfasst: 23.09.2006 11:43
von Andreas_F
Wenn ich aus schic's Beispiel den Abschnitt -{-Main ... ;} in eine Procedure übertrage und diese dann aufrufe bekomme ich den o.a. Assembler-Fehler: "PureBasic.asm[2482]: dd SM_idispatch error: undefined symbol".

Was mache ich falsch?

Danke im voraus für jede konstruktive Hilfe
Andreas_F

Verfasst: 26.09.2006 18:38
von schic
wenn Du pXlSheets Global deklarierst geht´s.

Code: Alles auswählen


;...

Global Dim pXlSheets.IDispatch(1)

;...

Procedure main()
  
  File$ = "E:\test\Mappe1.xls"
  
  pXlApp.IDispatch = SetAppObj("Excel.Application") ;Excel.Application.10
  If pXlApp = 0
    End
  EndIf
  
  pXlBooks.IDispatch = SetComObj(pXlApp, "Workbooks", 0)
  If LastError: Goto releaseall: EndIf
  
  varArr(0)\vt = #VT_BSTR
  varArr(0)\lVal = Ansi2Uni(@File$)
  AutoWrap(#DISPATCH_METHOD, pXlBooks, "Open", 1)
  VariantClear_(varArr(0))
  If LastError: Goto releaseall: EndIf
  
  pXlBook.IDispatch = SetComObj(pXlApp, "ActiveWorkbook", 0)
  If LastError: Goto releaseall: EndIf
  
  pXlSheets.IDispatch = SetComObj(pXlBook, "Worksheets", 0)
  If LastError: Goto releaseall: EndIf
  
  VariantInit_(pvResult.VARIANT)
  AutoWrap(#DISPATCH_PROPERTYGET,  pXlSheets, "Count", 0)
  NumOfXlSheets = pvResult\lVal
  Debug "NumOfXlSheets: " + Str(NumOfXlSheets)
  If LastError: Goto releaseall: EndIf
  
  Dim pXlSheets.IDispatch(NumOfXlSheets)
  For i = 1 To NumOfXlSheets
    Dim varArr.VARIANT(1)
    varArr(0)\vt = #VT_I4
    varArr(0)\lVal = i
    pXlSheets(i) = SetComObj(pXlApp, "Worksheets", 1)
    VariantClear_(varArr(0))
    
    VariantInit_(pvResult.VARIANT)
    AutoWrap(#DISPATCH_PROPERTYGET,  pXlSheets(i), "Name", 0)
    Nam$ = Uni2Ansi(pvResult\bstrVal)
    If LastError: Goto releaseall: EndIf
    Debug Nam$
  Next
  
  releaseall:
  AutoWrap(#DISPATCH_METHOD, pXlApp, "Quit", 0)
  ReleaseAllObjects()
  CoUninitialize_()
  LastError = 0
  
EndProcedure

main()

________
schic

Verfasst: 26.09.2006 18:57
von schic
Das Problem tritt nur im Debug-Modus auf :-?
Scheint am Debugger zu liegen.

Gruß
schic

Verfasst: 29.09.2006 19:58
von Andreas_F
Danke schic, das war's!

Ja, das Problem tritt auch bei mir nur im Debug-Modus auf.

Vielen Dank, Andreas_F

Verfasst: 30.09.2006 02:54
von mk-soft
Gibt noch eine weitere möglichkeit. Ist gerade in ein anderen Thread.

http://www.purebasic.fr/german/viewtopi ... 6&start=10

FF :wink: