Página 1 de 1
MenVar é Publica ?
Enviado: 18 Fev 2021 10:09
por Itamar M. Lins Jr.
Olá!
Preciso usar variáveis PRIVATE, mas com "-w3" não posso.
Sendo uma memvar publica, neste caso como apagar ela depois ?
Saudações,
Itamar M. Lins Jr.
MenVar é Publica ?
Enviado: 18 Fev 2021 11:31
por alxsts
Olá!
Use o comando
RELEASE
MenVar é Publica ?
Enviado: 18 Fev 2021 12:21
por Itamar M. Lins Jr.
Ola!
Public variables are unaffected by this form of the RELEASE
command. To release public variables, you must RELEASE them explicitly
or use CLEAR MEMORY.
Eu quero é eliminar, não é limpar.
Parece que não tem como.
A forma melhor é começar usar OOP.
Saudações,
Itamar M. Lins Jr.
MenVar é Publica ?
Enviado: 18 Fev 2021 13:39
por JoséQuintas
Declara pro fonte inteiro
Declara só pro módulo
É isso?
Isso passa no -w3, das duas formas.
é que PRIVATE e PUBLIC não declaram variáveis, é algo... desprezado (pra checagem). e dá erro se não declarar com MEMVAR primeiro.
MenVar é Publica ?
Enviado: 18 Fev 2021 13:47
por Itamar M. Lins Jr.
Olá!
Isso mesmo!
Saudações,
Itamar M. Lins Jr.
MenVar é Publica ?
Enviado: 18 Fev 2021 13:54
por JoséQuintas
Achei isto no hbmemvar.ch
Código: Selecionar todos
/* Values returned from __mvScope() function */
#define HB_MV_NOT_FOUND -2 /* not found in the symbols table */
#define HB_MV_UNKNOWN -1 /* not created yet */
#define HB_MV_ERROR 0 /* information cannot be obtained */
#define HB_MV_PUBLIC 1 /* PUBLIC variable */
#define HB_MV_PRIVATE_GLOBAL 2 /* PRIVATE created outside of current function/procedure */
#define HB_MV_PRIVATE_LOCAL 4 /* PRIVATE created in current function/procedure */
#define HB_MV_PRIVATE 6 /* PRIVATE variable */
Parece que MEMVAR expande um pouco o que seria PRIVATE.
Talvez seja usada função pra definir se é PUBLIC,PRIVATE, e por isso precisa declarar primeiro.
E se declarar MEMVAR, até dispensa o PRIVATE, só vai compensar se atribuir valor, e olhe lá.
MenVar é Publica ?
Enviado: 18 Fev 2021 14:02
por JoséQuintas
Só lembrando:
Código: Selecionar todos
Syntax: harbour <file[s][.prg]|@file> [options]
Options: -a automatic memvar declaration
MEMVAR não altera variável de PUBLIC pra PRIVATE, ou vice-versa.
A prova é que dá pra compilar pra ser declarado tudo automático como memvar, aonde não houver declaração (mesmo que exista PUBLIC/PRIVATE).
Só é perigoso usar o automático, porque até nome de campo pode virar variável.
MenVar é Publica ?
Enviado: 18 Fev 2021 14:44
por Fernando queiroz
Itamar M. Lins Jr. escreveu:
A forma melhor é começar usar OOP.
Saudações,
Itamar M. Lins Jr.
Depois de uma aula do mestre Quintas sobre OOP já migrei tudo, e o mundo se abriu em possibilidades
hoje declaro as variáveis dentro da classe que aceitam valores vindos de fora (publicas na classe)
ou as variáveis PROTECTED: visíveis em toda a classe mas não visível de fora
Código: Selecionar todos
CREATE CLASS PRODUTOSCLASS
VAR oServer
VAR cDefaultPrinter
VAR cReportOption
VAR nPrinterType
VAR dPeriodoInicial INIT (M->DAT_HOJE-30)
VAR dPeriodoFinal INIT (M->DAT_HOJE)
METHOD New( ParamServer ) INLINE ::oServer := ParamServer, Self
METHOD PRODUTOS_MANUTENCAO( )
METHOD PRODUTOS_PESQUISA( )
METHOD PRODUTOS_PESQUISA_COMPRAS( Fornecedor )
METHOD PRODUTOS_PESQUISA_TRANSFERENCIA( FINALIDADE )
METHOD PRODUTOS_PESQUISA_ENTRADA( Fornecedor )
PROTECTED:
VAR IncluiRemoto
VAR AtualizaRemoto
VAR ExcluiRemoto
VAR ConsultaRemoto
VAR cnConnection
VAR aFiliais INIT {}
MenVar é Publica ?
Enviado: 20 Fev 2021 16:12
por asimoes
Eu declaro as variáveis com o seu tipo pra deixar claro
Código: Selecionar todos
VAR oJanela AS OBJECT INIT Nil
VAR oDlg_Thread AS OBJECT INIT "oDlg_Thread"
VAR bBlock AS CODEBLOCK INIT Nil
VAR oTimer AS STRING INIT "oTimerThread"
VAR nTimer AS INTEGER INIT 300 // 5 minutos
VAR cTipo AS STRING INIT "B"
VAR lLiga AS LOGICAL INIT .F.
VAR nFloat AS NUMERIC INIT 0.00
VAR dDataBeneficio AS DATE INIT CTOD("")
VAR aRegAntes AS ARRAY INIT {}
VAR hTable AS HASH INIT {=>}