Hi! I explored the forums about this riddle, but I didn't get an real answer how to do this...
Main Question:
How to pass a COM Object (DISPATCH) to a function? In this code example it's just causing a GPF on the first call/get/let of the oDocument.
In this case I use PB 8.03.
Best regards,
Marc Giesmann
Main Question:
How to pass a COM Object (DISPATCH) to a function? In this code example it's just causing a GPF on the first call/get/let of the oDocument.
In this case I use PB 8.03.
Code:
FUNCTION XML_Validate(BYVAL oDocument AS DISPATCH, lWithMSGBOX AS LONG) AS LONG LOCAL oErrDoc AS DISPATCH LOCAL sErrBuff AS STRING LOCAL sLine,sErrCode,sLinePos,sURL,sSource,sReason AS STRING LOCAL vRes AS VARIANT LOCAL vErrDoc AS VARIANT OBJECT GET oDocument.Validate() TO vErrDoc SET oErrDoc = vErrDoc IF ISFALSE ISOBJECT(oErrDoc) THEN MSGBOX "Object wasn't initialized!Error in '" + FUNCNAME$ + "'.",%MB_ICONERROR OR %MB_TASKMODAL,"Internal XML-Error" FUNCTION = %FALSE EXIT FUNCTION END IF 'Error= OBJECT GET oErrDoc.ErrorCode TO vRes sErrCode = STR$(VARIANT#(vRes)) IF ISFALSE lWithMSGBOX THEN FUNCTION = VAL(sErrCode) EXIT FUNCTION END IF 'Error -> Error Handling. IF VAL(sErrCode) THEN OBJECT GET oErrDoc.URL TO vRes sURL = VARIANT$(vRes) OBJECT GET oErrDoc.LINE TO vRes sLine = STR$(VARIANT#(vRes)) OBJECT GET oErrDoc.SRCTEXT TO vRes sSource = VARIANT$(vRes) OBJECT GET oErrDoc.REASON TO vRes sReason = VARIANT$(vRes) OBJECT GET oErrDoc.LINEPOS TO vRes sLinePos = STR$(VARIANT#(vRes)) sErrBuff = "The XML-error " + sErrCode + " happend, while parsing '" + sURL + "'." + $CRLF+_ "Line" + sLine + ",Collumn " + sLinePos + "." + $CRLF + $CRLF + _ sReason MSGBOX sErrBuff,%MB_TASKMODAL OR %MB_ICONERROR, "XML-error while revalidating the document." FUNCTION = VAL(sErrCode) ELSE 'Everything OK FUNCTION = %TRUE END IF END FUNCTION
Marc Giesmann
Comment