Clipper On Line • Ver Tópico - Definição do tipo da variável

Definição do tipo da variável

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

Moderador: Moderadores

 

Definição do tipo da variável

Mensagempor asimoes » 16 Mar 2021 12:08

Pessoal,

Uma duvida:

O USO DE AS

LOCAL nNumero AS NUMERIC, aVetor AS ARRAY, lLogico AS LOGICAL, dData AS DATE, hRecord AS HASH, cString AS STRING, bBlock AS CODEBLOCK

O que o harbour faz quando eu defino assim uma variável?
â–º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

Definição do tipo da variável

Mensagempor JoséQuintas » 16 Mar 2021 13:05

Se não me engano, ele só vai dar erro em run-time se o conteúdo for outro.
Isso não ajuda muito, porque em run-time já é tarde demais.
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: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Definição do tipo da variável

Mensagempor asimoes » 16 Mar 2021 13:49

JoséQuintas escreveu:Se não me engano, ele só vai dar erro em run-time se o conteúdo for outro.
Isso não ajuda muito, porque em run-time já é tarde demais.


Vou fazer um teste aqui nNumero AS NUMERIC vou atribuir nNumero := "" para testar a critica
â–º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

Definição do tipo da variável

Mensagempor asimoes » 16 Mar 2021 15:51

O harbour não valida o tipo em tempo de execução então:

LOCAL nNumero AS NUMERIC

nNumero := "" //deixa atribuir sem erro, quando é definido por alguma classe, ai funciona, dá erro se atribuir tipo diferente.

VAR nNumero AS NUMERIC INIT 1

Então quem colocou assim fora de uma classe, só colocou lixo pra dentro do código
â–º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

Definição do tipo da variável

Mensagempor Claudio Soto » 17 Mar 2021 11:23

Para verificar en run-time el contenido de las variables HMG tiene CHECK TYPE

Ver documentacion: http://www.hmgforum.com/hmgdoc/data/HMG_CheckType.htm

El codigo esta en los fuentes.

#xtranslate CHECK TYPE [ <lSoft: SOFT> ] <var> AS <type> [, <varN> AS <typeN> ] => ; HMG_CheckType( <.lSoft.>, { <"type"> , ValType( <var> ), <"var"> } [, { <"typeN"> , ValType( <varN> ), <"varN"> } ] )
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar de usuário

Claudio Soto
Colaborador

Colaborador
 
Mensagens: 555
Data de registro: 27 Ago 2012 12:31
Cidade/Estado: Uruguay
Curtiu: 35 vezes
Mens.Curtidas: 166 vezes

Definição do tipo da variável

Mensagempor alxsts » 17 Mar 2021 16:58

Olá!

Conforme consta no arquivo xhb-diff.txt que existe na pasta DOC da instalação padrão do Harbour:
### STRONG TYPED VARIABLES ###
====================================
Harbour and xHarbour allow to declare type of variables using syntax similar
to Visual Object which was adopted also by FlagShip and some other xBase
compatible languages (i.e. FlagShip):
LOCAL var AS STRING
Anyhow so far in both compilers it is only source code decoration and it's
simply ignored during compilation. The syntax is similar but not the same.
In VO:
LOCAL var1, var2 AS LOGICAL
means that var1 and var2 are character variables and are initialized to .F.
at runtime. In Harbour and xHarbour 'AS <type>' has to be repeated after
each variable so in above code only var2 is strongly typed but not var1.
To declare both variables as logical ones it should be changed to:
LOCAL var1 AS STRING, var2 AS STRING
Such syntax is also not compatible with syntax of typed object variables
(see TYPED OBJECT VARIABLES below) where
VAR v1, v2 AS LOGICAL
declares both variables as logical ones.
This can strongly confuse users so in the future adding fully functional
support for strong typed variables probably it will be changed to syntax
compatible with other xBase compatible languages.
Now please remember that neither Harbour nor xHarbour make type validation
during compilation and at runtime and typed variables are not implicitly
initialized to empty value of given type.

### TYPED OBJECT VARIABLES ###
====================================
Harbour supports strong typed object variables, f.e.:
CREATE CLASS MyClass
VAR var1 AS INTVAR
VAR var2 AS NUMERIC
VAR var3 AS DATE
VAR var3 AS CHARACTER
ENDCLASS
And validates assigned values at runtime just like in Class(y).
Variables declared as numeric, logical, date and timestamp without
explicit initialization value (INIT clause) are initialized to empty
value of given type. This functionality can be disabled defining
HB_CLS_NOAUTOINIT macro before including hbclass.ch.
xHarbour can compile above code but AS <type> is only used to
initialize numeric and logical values to 0 and .f.
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

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




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 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