MenVar é Publica ?

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

MenVar é Publica ?

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

MenVar é Publica ?

Mensagem por alxsts »

Olá!

Use o comando RELEASE
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

MenVar é Publica ?

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

MenVar é Publica ?

Mensagem por JoséQuintas »

Declara pro fonte inteiro

Código: Selecionar todos

MEMVAR variavel

PROCEDURE Test

   PRIVATE variavel
Declara só pro módulo

Código: Selecionar todos

PROCEDURE Test
   MEMVAR variavel
   PRIVATE variavel
É 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

MenVar é Publica ?

Mensagem por Itamar M. Lins Jr. »

Olá!
Isso mesmo!

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

MenVar é Publica ?

Mensagem 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á.

Código: Selecionar todos

MEMVAR x
PRIVATE x := 10
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

MenVar é Publica ?

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

MenVar é Publica ?

Mensagem 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 {}
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

MenVar é Publica ?

Mensagem 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 {=>}
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder