Página 1 de 1
Saber os Métodos de um Objeto/Classe
Enviado: 07 Fev 2016 11:33
por asimoes
Pessoal,
Tem como no harbour saber os métodos de um objeto exemplo oWebService := Win_OleCreateObject("MSXML2.ServerXMLHTTP"), tem como listar os métodos do objeto MSXML2.ServerXMLHTTP ? sem ter que ir procurar o google ou página de pesquisa?
E de uma classe exemploe:
oPdf := PdfPrintClass():New()
Quais os métodos da classe PdfPrintClass ?
Saber os Métodos de um Objeto/Classe
Enviado: 07 Fev 2016 19:59
por fladimir
Alguma função não sei, mas via DEBUG conseguimos ter acesso ao q não for HIDDEN ou PRIVATE.
Saber os Métodos de um Objeto/Classe
Enviado: 07 Fev 2016 20:22
por JoséQuintas
Tem função pra isso sim, pelo menos pra classes criadas pelo Harbour.
Só não sei dizer qual é, e pesquisar isso na internet é difícil.
Para outras classes, não sei se a mesma coisa serve.
Em último caso uso a IDE do VB6, que tem isso.
Saber os Métodos de um Objeto/Classe
Enviado: 07 Fev 2016 20:36
por asimoes
Quintas,
Seria legal agente ter isso no fórum, montar um banco de informações dos recursos que o harbour pode obter.
Iria ajudar muitos.
Como não temos uma ide iagual c#, delphi temos que descobrir na internet como os métodos de um objetos funcionam e quais valores de set/get passar
Saber os Métodos de um Objeto/Classe
Enviado: 07 Fev 2016 21:12
por JoséQuintas
Por coincidência, comentários recentes na hbnfe:
Eis que surge
https://msdn.microsoft.com/pt-br/librar ... s.85).aspx
Saber os Métodos de um Objeto/Classe
Enviado: 07 Fev 2016 21:54
por JoséQuintas
E referenciando o XML 6. 0, mostra como sendo parte de MSXML2
Ainda não sei se isso poderia resolver o problema de diferença entre Harbour/xHarbour.
No Vb6 acaba aparecendo um mini-manual, mas não sei se isso depende de alguma outra coisa.
Com certeza o XML 6.0 não é do tempo do VB6, veio depois.
Saber os Métodos de um Objeto/Classe
Enviado: 07 Fev 2016 22:10
por JoséQuintas
O meu VB6 é pirata, conforme recomendado pelo suporte da Microsoft.
Tenho licença pro VB.NET, que dá direito ao VB6. O suporte da Microsoft realmente disse isso pra mim, do pirata, pois eles não tinham mais oficial pra mandar.
Naquela época não existiam as versões Express grátis, mas custou muuuito mais barato do que qualquer produtinho xBase.
Aliás isso sempre foi uma parte chata:
Qualquer porcaria que fazem pro xBase custa caro, mesmo as coisas grátis pra outras linguagens.
Até usar DBF em VB6 era grátis, com direito a comandos SQL inclusive.
Talvez tenha algo parecido no compilador C, que usamos pra compilar o Harbour e fontes em geral, pra isso de DLLs.
Se fizerem pro Harbour, provavelmente vão cobrar.
Não sei se com isso do Visual Studio grátis, se dá direito ao VB6 grátis também.
Na época que comprei foi 5 pagamentos de 100 reais, acho que até na época foi mais barato que comprar um Windows.
Nessa mesma época, acho que o xHarbour custava uns 5.000 reais, não tinha IDE, e dependia de assinatura pra atualizar.
Até hoje ainda não tem recursos que o VB6 tinha.... rs
Saber os Métodos de um Objeto/Classe
Enviado: 07 Fev 2016 22:51
por alxsts
Olá!
Veja se esta ferramenta te ajuda:
Explorer Lib
ExplorerLiblibCOFFOMF
Saber os Métodos de um Objeto/Classe
Enviado: 08 Fev 2016 16:31
por Claudio Soto
Estas son unas funciones de HMG Debugger para listar los métodos y valores de los objectos, están incluidas en la carpeta de HMG Oficial c:\hmg.3.4.2\source\debugger\dbgHB.prg
Pueden ser fácilmente adaptables, espero que les sea útil.
Usar así:
Código: Selecionar todos
LOCAL aItems, cVarName, xVarValue, aObjRawValue
cVarName := "oMiVar"
xVarValue := oMiVar
aItems := HMG_Debugger():GetObjectInfo( cVarName, xVarValue, @aObjRawValue )
Código: Selecionar todos
METHOD GetObjectInfo( cObjName, oObject, aObjRawValue ) CLASS HMGDebugger
LOCAL aVars, aMethods, i
LOCAL xValue, cValType, cValue
LOCAL arr := {}
#define _OBJ_SEP_ ":"
aObjRawValue := {}
IF ValType( oObject ) != "O"
::GUIMessageBox( "GetObjectInfo: Invalid data type ( ValType: " + ValType( oObject ) + " )" ) // GUI: message box info
ELSE
aVars := __objGetMsgList( oObject ) // create list of object messages
aMethods := __objGetMethodList( oObject ) // create list of object method
FOR i := 1 TO Len( aVars )
xValue := __dbgObjGetValue( oObject, aVars[i] )
cValType := Valtype( xValue )
cValue := __dbgValToStr( xValue )
IF Len( cValue ) > VAR_MAX_LEN
cValue := Left( cValue, VAR_MAX_LEN )
ENDIF
AAdd( arr, { cObjName + _OBJ_SEP_ + aVars[i], cValType, cValue } )
AAdd( aObjRawValue, xValue )
NEXT
FOR i := 1 TO Len( aMethods )
AAdd( arr, { cObjName + _OBJ_SEP_ + aMethods[ i ], "", "Method" } )
AAdd( aObjRawValue, NIL )
NEXT
ENDIF
RETURN arr
FUNCTION __dbgValToStr( uVal )
LOCAL cType := ValType( uVal ), i, s, nLen
DO CASE
CASE uVal == NIL ; RETURN "NIL"
CASE cType == "B" ; RETURN "{|| ... }"
CASE cType == "A"
s := ""
nLen := Min( 8, Len( uVal ) )
FOR i := 1 TO nLen
s += '"' + Valtype( uVal[i] ) + '"' + Iif( i==nLen, "", ", " )
NEXT
IF nLen < Len( uVal )
s += ", ..."
ENDIF
RETURN "Array(" + hb_ntos( Len( uVal ) ) + "): { " + s + " }"
CASE cType $ "CM" ; RETURN '"' + uVal + '"'
CASE cType == "L" ; RETURN Iif( uVal, ".T.", ".F." )
CASE cType == "D" ; RETURN DToC( uVal )
CASE cType == "T" ; RETURN hb_TToC( uVal )
CASE cType == "N" ; RETURN Str( uVal )
CASE cType == "O" ; RETURN "Class " + uVal:ClassName() + " object"
CASE cType == "H" ; RETURN "Hash(" + hb_ntos( Len( uVal ) ) + ")"
CASE cType == "P" ; RETURN "Pointer"
ENDCASE
RETURN "U"
STATIC FUNCTION __dbgObjGetValue( oObject, cVar, lCanAcc )
LOCAL xResult
LOCAL oErr
IFFAIL( NIL )
BEGIN SEQUENCE WITH {|| Break() }
xResult := __dbgSENDMSG( t_oDebugger:nProcLevel, oObject, cVar )
lCanAcc := .T.
RECOVER
BEGIN SEQUENCE WITH {| oErr | Break( oErr ) }
/* Try to access variables using class code level */
xResult := __dbgSENDMSG( 0, oObject, cVar )
lCanAcc := .T.
RECOVER USING oErr
xResult := oErr:description
lCanAcc := .F.
END SEQUENCE
END SEQUENCE
RETURN xResult
Saber os Métodos de um Objeto/Classe
Enviado: 08 Fev 2016 17:58
por asimoes
Olá Dr. Claudio,
Obrigado por compartilhar conosco, esta função funciona no exemplo: win_OleCreateObject("WScript.Shell") ? ou só objetos criados pelo harbour?
Saber os Métodos de um Objeto/Classe
Enviado: 09 Fev 2016 17:41
por Claudio Soto
Hola Asimoes,
estas funciones solo listan las clases creadas por Harbour.