Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Type mismatch in return from COM object
#4
I have a followup question about memory management.

I have created parallel data structures in QM and C# (Types in QM, Classes in C#). I assign the returned values from the C# COM object into their QM Types so that the BSTR are converted to str values. This all works fine but I don't understand the memory lifecycle. Do I need to free the pacsWebServices object allocated with _create

Member function EMIPacsWebService.GetPacsUser
Code:
Copy      Help
PACSWebServiceWrapper.PACSWebInterface pacsWebServices
pacsWebServices._create

or the pacsLogin C# object returned from the DLL?

Member function EMIPacsWebService.GetPacsUser
Code:
Copy      Help
PACSWebServiceWrapper.iPacsLogin pacsLogin = pacsWebServices.getPacsLogin(hostname);; Call to COM object

Here's the entire function for context:

Member function EMIPacsWebService.GetPacsUser
Code:
Copy      Help
function str'hostname TUserHistory'&sUserHistory ;; Returns the PACS user for this station

#compile "RadFusionTypes"

typelib PACSWebServiceWrapper {xxx-xx-xxxxx} 1.0

PACSWebServiceWrapper.PACSWebInterface pacsWebServices
pacsWebServices._create
str baseURL = this.baseURL
;out F"endpoint {baseURL}"
pacsWebServices.setEndPointAddress( baseURL)

PACSWebServiceWrapper.iPacsLogin pacsLogin = pacsWebServices.getPacsLogin(hostname);; Call to COM object
if (pacsLogin)
,if (pacsLogin.NetworkStatus)
,,sUserHistory.NetworkStatus.StatusCode = pacsLogin.NetworkStatus.statusCode
,,sUserHistory.NetworkStatus.StatusReason = pacsLogin.NetworkStatus.statusReason
,,if (sUserHistory.NetworkStatus.statusCode = 200)
,,,sUserHistory.AeRef = pacsLogin.AeRef
,,,sUserHistory.FailedLoginDateTime = pacsLogin.FailedLoginDateTime
,,,sUserHistory.Host = pacsLogin.Host
,,,sUserHistory.LoginDateTime = pacsLogin.LoginDateTime
,,,sUserHistory.LogoutDateTime = pacsLogin.LogoutDateTime
,,,sUserHistory.UserId = pacsLogin.UserId
,,else
,,,str reason = pacsLogin.NetworkStatus.statusReason
,,,int code = pacsLogin.NetworkStatus.statusCode
,,,out F"Failed to retrieve getPacsLogin for hostname {hostname} because status code {code} reason {reason}"
,else
,,out F"Failed to retrieve getPacsLogin for hostname {hostname} null network status returned"
,,sUserHistory.NetworkStatus.StatusCode = 500
,,sUserHistory.NetworkStatus.StatusReason = "Null network status returned"
else
,out F"Failed to retrieve getPacsLogin for hostname {hostname} null object returned"    
,sUserHistory.NetworkStatus.StatusCode = 500
,sUserHistory.NetworkStatus.StatusReason = "Null object returned from DLL"
,,

Thanks!


Messages In This Thread

Forum Jump:


Users browsing this thread: 4 Guest(s)