Clipper On Line • Ver Tópico - Tipo de variável recebida por parametro

Tipo de variável recebida por parametro

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

Moderador: Moderadores

 

Tipo de variável recebida por parametro

Mensagempor rubens » 18 Ago 2018 09:13

Bom dia...

Uma variável recebida por parametro qual a visibilidade/tipo dela? Local ?
Olha esse trecho:
Function Main( cPath_Dbf, cEmpresa, cPath )
   Hb_Default( @cPath_dbf, '\DATASAC\' )
   Hb_Default( @cEmpresa, 'Backup' )   
   Hb_Default( @cPath, 'D' )   
        Teste()
   RETURN nil

Function Teste()
    Alert( cPath_Dbf )
   Return nil

Dá erro de variável não encontrada... na linha do Alert( cPath_dbf ).
Daí para poder usar assim tenho que criar uma outra variável dentro do Main. Não posso mudar para Public ou Private uma variável que já existe.
vai virando uma lista de variáveis.
Alguma opção na compilação para que ao receber a variável ela fica visível para as subrotinas/funções?

Obrigado
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Tipo de variável recebida por parametro

Mensagempor Nascimento » 18 Ago 2018 10:21

tente dessa forma:

Function Main( )
parameters cPath_Dbf, cEmpresa, cPath
   Hb_Default( @cPath_dbf, '\DATASAC\' )
   Hb_Default( @cEmpresa, 'Backup' )   
   Hb_Default( @cPath, 'D' )   
        Teste()
   RETURN nil

Function Teste()
    Alert( cPath_Dbf )
   Return nil


porque desta forma os parametros passam como variaveis privates entre os parenteses elas são locais
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Tipo de variável recebida por parametro

Mensagempor alxsts » 18 Ago 2018 13:37

Olá!

rubens escreveu:Uma variável recebida por parametro qual a visibilidade/tipo dela? Local ?
Sim, este é o comportamento padrão, exceto para arrays.
Function Main()

local a := {1,2,3}
local b := 0

setmode(25,80)
cls

f1( a, b )

QOut( "a[1]", a[1], "b", b )

__wait()

return nil

function f1(x,y)

   x[1]++
   y++

return nil

Evite usar variáveis Private e Public. Dê preferência às variáveis dos tipos Local e Static. Se precisar usá-las para leitura em outras funções, passe-as como parâmetro. Neste caso, serão passadas por valor (by val).
Function Main( cPath_Dbf, cEmpresa, cPath )

   Hb_Default( @cPath_dbf, '\DATASAC\' )
   Hb_Default( @cEmpresa, 'Backup' ) 
   Hb_Default( @cPath, 'D' ) 
   
   Teste( cPath_Dbf )   // passar parâmetro

RETURN nil

Function Teste( cPath_Dbf )  // recebe parâmetro por valor e cria variável LOCAL cPath_Dbf na função Teste()
   Alert( cPath_Dbf )
Return nil

Se precisar atualizar as variáveis na função chamada, passe-as por referência (by ref), precedidas pelo carácter @, como mostrou o Nascimento.

O uso da sentença Parameters é obsoleto. Ao invés de
   Function Main( )
    parameters cPath_Dbf, cEmpresa, cPath   // --> Cria estas variáveis como PRIVATE
Use como você fez
Function Main( cPath_Dbf, cEmpresa, cPath )
[]´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 8 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