Moderador: Moderadores
ClienteClass():Valida( xxx )
oClass := TMYCLASS:New()
? valtype( oClass ) // <- retorna "O"
oClass := NIL
#pragma /w2 //de 0 a 3
#pragma /es2 //de 0 a 2
REQUEST HB_CODEPAGE_PTISO
#include "hbclass.ch"
MEMVAR cVarTeste
PROCEDURE main()
LOCAL oClass
PUBLIC cVarTeste
Set( _SET_CODEPAGE, "PTISO" )
SetMode(40,100)
CLS
cVarTeste := "001"
oClass := TMYCLASS():New()
? oClass:cTeste1, " <- Aqui teria que ser [001] - OK"
? ""
? "Tipo de variavel de [oClass]=", valtype(oClass)
? ""
oClass := NIL
? "Tipo de variavel de [oClass]=", valtype(oClass)
? ""
cVarTeste := "002"
oClass := TMYCLASS():New()
? oClass:cTeste1, " <- Aqui teria que ser [002] - OK"
? ""
oClass := NIL
cVarTeste := "003"
oClass := TMYCLASS():New()
? oClass:cTeste1, " <- Aqui teria que ser [003] - OK"
? ""
oClass := NIL
oClass := NIL
cVarTeste := "004"
oClass := TMYCLASS():New()
cVarTeste := "005"
? oClass:cTeste1 := cVarTeste
? oClass:cTeste1, " <- Aqui teria que ser [005] - OK"
? ""
oClass := NIL
Inkey(0)
RETURN
CREATE CLASS TMYCLASS
VAR cTeste1
DATA cTeste2
CLASSVAR cTeste3
METHOD INIT()
DESTRUCTOR Destroy()
ENDCLASS
METHOD INIT() CLASS TMYCLASS
::cTeste1 := cVarTeste
RETURN NIL
METHOD Destroy CLASS TMYCLASS
local aVars, n, aData
? "::cTeste1=", hb_valtoexp(::cTeste1), " <- Antes de Destruir"
//https://harbour.github.io/doc/harbour.html#__objsetvaluelist
aVars := __objGetMsgList( Self, .T. )
aData := array( len(aVars), 2 )
for n = 1 to len(aVars)
aData[n,HB_OO_DATA_SYMBOL] := aVars[n]
aData[n,HB_OO_DATA_VALUE] := NIL
next n
//https://harbour.github.io/doc/harbour.html#__objsetvaluelist
__objSetValueList( Self, aData )
? "::cTeste1=", hb_valtoexp(::cTeste1), " <- Depois de Destruir"
return NIL
#pragma /w2 //de 0 a 3
#pragma /es2 //de 0 a 2
REQUEST HB_CODEPAGE_PTISO
#include "hbclass.ch"
MEMVAR cVarTeste
PROCEDURE main()
LOCAL oClass, hVars
PUBLIC cVarTeste
Set( _SET_CODEPAGE, "PTISO" )
SetMode(40,100)
CLS
cVarTeste := "001"
oClass := TMYCLASS():New()
? oClass:cTeste1, " <- Aqui teria que ser [001] - OK"
? ""
? "Tipo de variavel de [oClass]=", valtype(oClass)
? ""
oClass := NIL
? "Tipo de variavel de [oClass]=", valtype(oClass)
? ""
cVarTeste := "002"
oClass := TMYCLASS():New()
? oClass:cTeste1, " <- Aqui teria que ser [002] - OK"
? ""
oClass := NIL
cVarTeste := "003"
oClass := TMYCLASS():New()
? oClass:cTeste1, " <- Aqui teria que ser [003] - OK"
? ""
oClass := NIL
oClass := NIL
cVarTeste := "004"
oClass := TMYCLASS():New()
cVarTeste := "005"
? oClass:cTeste1 := cVarTeste
? oClass:cTeste1, " <- Aqui teria que ser [005] - OK"
? ""
oClass := NIL
oClass := TMYCLASS():New()
hVars := { => }
hVars["cTeste2"] := "Abc"
hVars["cTeste3"] := "Def"
oClass:REDEFINEVARS( hVars )
? "oClass:cTeste1=", oClass:cTeste1, " <- Aqui teria que ser [005] - OK"
? "oClass:cTeste2=", oClass:cTeste2
? "oClass:cTeste3=", oClass:cTeste3
? ""
oClass := NIL
Inkey(0)
RETURN
CREATE CLASS TMYCLASS
VAR cTeste1
DATA cTeste2
CLASSVAR cTeste3
METHOD REDEFINEVARS( hVars )
METHOD INIT()
DESTRUCTOR Destroy()
ENDCLASS
METHOD INIT() CLASS TMYCLASS
::cTeste1 := cVarTeste
RETURN NIL
METHOD REDEFINEVARS( hVars )
local aData, aKeys, cKey, n
aData := array( len(hVars), 2 )
aKeys := hb_HKeys( hVars )
for each cKey in aKeys
n := cKey:__enumIndex()
aData[n,HB_OO_DATA_SYMBOL] := cKey
aData[n,HB_OO_DATA_VALUE] := hVars[cKey]
next
__objSetValueList( Self, aData )
RETURN NIL
METHOD Destroy CLASS TMYCLASS
local aVars, n, aData
? "::cTeste1=", hb_valtoexp(::cTeste1), " <- Antes de Destruir"
//https://harbour.github.io/doc/harbour.html#__objsetvaluelist
aVars := __objGetMsgList( Self, .T. )
aData := array( len(aVars), 2 )
for n = 1 to len(aVars)
aData[n,HB_OO_DATA_SYMBOL] := aVars[n]
aData[n,HB_OO_DATA_VALUE] := NIL
next n
//https://harbour.github.io/doc/harbour.html#__objsetvaluelist
__objSetValueList( Self, aData )
? "::cTeste1=", hb_valtoexp(::cTeste1), " <- Depois de Destruir"
return NIL
//http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=26039
#pragma /w2 //de 0 a 3
#pragma /es2 //de 0 a 2
REQUEST HB_CODEPAGE_PTISO
#include "hbclass.ch"
MEMVAR cVarTeste
PROCEDURE main()
LOCAL oClass
PUBLIC cVarTeste
Set( _SET_CODEPAGE, "PTISO" )
SetMode(40,100)
CLS
cVarTeste := "001"
oClass := TMYCLASS():New()
oClass := NIL
oClass := TMYCLASS():New()
oClass := NIL
Inkey(0)
RETURN
CREATE CLASS TMYCLASS
VAR cTeste1
DATA cTeste2
CLASSVAR cTeste3
METHOD REDEFINEVARS( hVars )
METHOD INIT()
DESTRUCTOR Destroy()
ENDCLASS
METHOD INIT() CLASS TMYCLASS
::cTeste1 := cVarTeste
RETURN NIL
METHOD REDEFINEVARS( hVars )
local aData, aKeys, cKey, n
aData := array( len(hVars), 2 )
aKeys := hb_HKeys( hVars )
for each cKey in aKeys
n := cKey:__enumIndex()
aData[n,HB_OO_DATA_SYMBOL] := cKey
aData[n,HB_OO_DATA_VALUE] := hVars[cKey]
next
__objSetValueList( Self, aData )
RETURN NIL
METHOD Destroy CLASS TMYCLASS
local aVars, n, aData
? "::cTeste1=", hb_valtoexp(::cTeste1), " <- Antes de Destruir"
//https://harbour.github.io/doc/harbour.html#__objsetvaluelist
aVars := __objGetMsgList( Self, .T. )
aData := array( len(aVars), 2 )
// Aqui Prepara as Variaveis para serem limpas
for n = 1 to len(aVars)
aData[n,HB_OO_DATA_SYMBOL] := aVars[n]
aData[n,HB_OO_DATA_VALUE] := NIL
next n
//https://harbour.github.io/doc/harbour.html#__objsetvaluelist
__objSetValueList( Self, aData )
? "::cTeste1=", hb_valtoexp(::cTeste1), " <- Depois de Destruir"
// Aqui é excluido a Variavel da Class
for n = 1 to len(aVars)
__objDelData( Self, aVars[n] )
? "Variavel " + aVars[n] + " excluida da classe..."
next n
return NIL
rossine escreveu:Não sei como o harbour gerencia as classes, mas me parece que quando elas são definidas pela primeira vez, ficam lá até o final da execução do sistema e as variáveis não podem ser excluÃdas.
Talvez eu esteja errado, mas foi o que entendi:
METHOD New() INLINE ::cTeste := cVarTeste, Self
Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes