Alguém já fez um programa que chama uma dll que retorna um array? Tentei acessar da seguinte maneira, porém o mesmo dá erro, já tentei receber somente em character sem o extent mais o erro é o mesmo. FUNCTION mt_connectlist RETURNS CHARACTER EXTENT 255: DEF VAR iValue AS CHARACTER EXTENT 255 NO-UNDO. DEF VAR hCall AS HANDLE NO-UNDO. CREATE CALL hCall. ASSIGN hCall:CALL-NAME = "mt_connectlist" hCall:LIBRARY = "c:\temp\pmtg.dll" hCall:CALL-TYPE = DLL-CALL-TYPE hCall:RETURN-VALUE-DLL-TYPE = "CHARACTER" hCall:NUM-PARAMETERS = 0. hCall:INVOKE(). iValue = hCall:RETURN-VALUE. DELETE OBJECT hCall. RETURN iValue. END FUNCTION. DEFINE VARIABLE charout AS CHARACTER EXTENT 255 NO-UNDO. ASSIGN charout = mt_connectlist(). MESSAGE charout[1] VIEW-AS ALERT-BOX INFO BUTTONS OK.
o seu charout, ele não é um campo tipo character separado por virgula ou coisa do tipo ? dai vc recebe ela bruta e depois vc transforma.
bootstrapmaster já tentei assim e não dá certo. Existe um na linguagem Java um tipo TTABSOCK, o problema esta ai como definir a variavel no progress que pode receber esse cara?
/*Essa função resolveu o problema*/ FUNCTION mt_connectlist RETURNS INTEGER EXTENT 255 (): DEF VAR iValue AS INTEGER NO-UNDO. DEF VAR hCall AS HANDLE NO-UNDO. DEFINE VARIABLE cReturnGet AS INTEGER EXTENT 255 NO-UNDO. CREATE CALL hCall. ASSIGN hCall:CALL-NAME = "mt_connectlist" hCall:LIBRARY = SEARCH("dll\pmtg.dll") hCall:CALL-TYPE = DLL-CALL-TYPE hCall:RETURN-VALUE-DLL-TYPE = "LONG" hCall:NUM-PARAMETERS = 1. hCall:SET-PARAMETER(1, "LONG", "OUTPUT", cReturnGet). hCall:INVOKE(). iValue = hCall:RETURN-VALUE. DELETE OBJECT hCall. RETURN cReturnGet. END FUNCTION.