Clipper On Line • Ver Tópico - MenVar é Publica ?

MenVar é Publica ?

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

Moderador: Moderadores

 

MenVar é Publica ?

Mensagempor Itamar M. Lins Jr. » 18 Fev 2021 10:09

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6949
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 506 vezes

MenVar é Publica ?

Mensagempor alxsts » 18 Fev 2021 11:31

Olá!

Use o comando RELEASE
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

MenVar é Publica ?

Mensagempor Itamar M. Lins Jr. » 18 Fev 2021 12:21

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6949
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 506 vezes

MenVar é Publica ?

Mensagempor JoséQuintas » 18 Fev 2021 13:39

Declara pro fonte inteiro

MEMVAR variavel

PROCEDURE Test

   PRIVATE variavel


Declara só pro módulo

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18150
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

MenVar é Publica ?

Mensagempor Itamar M. Lins Jr. » 18 Fev 2021 13:47

Olá!
Isso mesmo!

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6949
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 506 vezes

MenVar é Publica ?

Mensagempor JoséQuintas » 18 Fev 2021 13:54

Achei isto no hbmemvar.ch

/* 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á.

MEMVAR x
PRIVATE x := 10
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18150
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

MenVar é Publica ?

Mensagempor JoséQuintas » 18 Fev 2021 14:02

Só lembrando:

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18150
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

MenVar é Publica ?

Mensagempor Fernando queiroz » 18 Fev 2021 14:44

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

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
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

MenVar é Publica ?

Mensagempor asimoes » 20 Fev 2021 16:12

Eu declaro as variáveis com o seu tipo pra deixar claro
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)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google [Bot] e 6 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro