Variáveis

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

Moderador: Moderadores

jelias
Usuário Nível 3
Usuário Nível 3
Mensagens: 260
Registrado em: 27 Ago 2008 11:32
Localização: Minas Gerais

Variáveis

Mensagem por jelias »

Olá amigos. Desejo e espero encontra-los bem!

Aproveitando o feriado para organizar velhos livros de Clipper, acabei folheando algumas páginas e mergulhei em uma leitura que aflorou grande nostalgia.

A partir da leitura, me ocorreu uma dúvida sobre variáveis que não são declaradas no início como LOCAL, STATIC, PRIVATE ou PUBLIC.

Vejam o exemplo:

Código: Selecionar todos

FUNCTION Teste()
LOCAL aTeste[10]
FOR i:=1 to LEN(aTeste)
       ? aTeste[i]
NEXT
No exemplo acima a variável i não foi declarada anteriormente, portanto minha dúvida consiste em saber se ela foi criada como LOCAL, STATIC, PRIVATE, etc.

Observando alguns sistemas, vemos muito esta prática principalmente quando criamos variáveis para receber o conteúdo de campos do banco de dados, ou seja, é comum ver o seguinte:

Código: Selecionar todos

sele AL_CLIEN
DBSETORDER(1)
DBSEEK(cCodigo)

cNome:=AL_CLIEN->nome
cEdereco:=AL_CLIEN->endereco
....
....
Através deste exemplo, podemos observar que nenhuma instrução foi utilizada para declarar tais variáveis anteriormente.


Saudações,

Júlio.
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Variáveis

Mensagem por JoséQuintas »

Caso não seja declarada, ela assume como PRIVATE.
O compilador acusa a falta disso, se usar os parâmetros -w1, -w2 ou -w3, cada um indica checagem "mais pesada"
Adicionalmente pode usar -es2, assim isso se torna obrigatório.
clipper arquivo.prg -w3 -es2
Esse é o default do Harbour.

Outros opcionais no clipper são -n -m

Um compila um fonte por vez, outro obriga que o nome do fonte esteja internamente.

Acho que usar tudo isso seria a forma mais profissional, e avisa sobre muitos problemas que poderiam ocorrer.
-m -n -w3 -es2

Note que isso também obriga a declarar campos de arquivo.
Neste caso prefiro usar o ALIAS, só pra campos de arquivos, e não para variáveis.
cliente->Nome

Poderia também declarar no fonte: FIELDS Nome
E poderia user o alias genérico: fields->Nome

Pra uma pesquisa nos fontes sobre campos de arquivo, o alias ajuda muito.

Essa é minha opinião.
Cada um decide o que acha melhor pra si.
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/
jelias
Usuário Nível 3
Usuário Nível 3
Mensagens: 260
Registrado em: 27 Ago 2008 11:32
Localização: Minas Gerais

Variáveis

Mensagem por jelias »

Grato amigo Quintas.

Segue o mesmo que acorria com o Clipper 5.2e.

Este comportamento ressalta a importância de usar a instrução para declarar a variável, "mesmo nos casos mais simples", afim de evitar possíveis problemas.

Saudações,

Júlio.
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
Responder