Não to conceguindo passar variaveis locais de uma função para outra, no mesmo arquivo ".prg".
Será q alguem poderia me da uma esplicação de como isso funciona??
Desde já agradeço...
Moderador: Moderadores

Código: Selecionar todos
function teste1()
public cVariavel
cVariavel := "Rochinha"
return .t.
Function teste2
? cVariavel
return .t.
teste1()
teste2()
Código: Selecionar todos
function teste1()
local cVariavel
cVariavel := "Rochinha"
return cVariavel
Function teste2( cConteudo )
? cConteudo
return .t.
teste2( teste1() )

Código: Selecionar todos
function pesquisa()
public cNome := "Rochinha"
local cVariavel := space(30), cMensagem := "Nao encontrei"
@ 0,0 say "Nome: " get cVariavel picture "@!X"
read
select arquivo
dbSeek( cVariavel )
if .not. found()
cVariavel := cMensagem
else
cVariavel := arquivo->campo
endif
return cVariavel
Function QualDado( cTexto )
Alert( cMensagem )
return NIL
Código: Selecionar todos
...
cTexto := pesquisa()
? QualDado( cTexto )
? cNome
Código: Selecionar todos
set key K_F4 to savreg ( variavel1, variavel2, variavel3 )Código: Selecionar todos
function cadastro
local op := space(1)
local varnome := space(50)
@ 10,10 say "Nome: "get varnome
@ 11,10 say "Deseja salvar? Sim ou Não " get op
read
if op="s"
to savreg ( varnome ) //chamaria a função savreg repassando a variavel varnome
else
exit
end if
return
function savreg
//Salvaria a variavel "varnome" no banco...
return

Código: Selecionar todos
function cadastro
local op := space(1)
PUBLIC varnome := space(50) // coloque a variavel como PUBLICa
@ 10,10 say "Nome: "get varnome
@ 11,10 say "Deseja salvar? Sim ou Não " get op
read
if op="s"
savreg ( varnome ) //chamaria a função savreg repassando a variavel varnome
// Apenas coloque savreg()
else
exit
end if
return
function savreg
//Salvaria a variavel "varnome" no banco...
replace campo with varnome
return
Código: Selecionar todos
public nomevar := space(50)Código: Selecionar todos
nomevar := space(50)
Código: Selecionar todos
clear
v1 = 1
@ 1,10 say "PRG inicial - Variavel v1 = "+str(v1,2,0)
funcao1()
@ row()+2,10 say "PRG inicial - Variavel v2 = "+str(v2,2,0)
//nesta linha vai dar erro, pois v2 não existe no PRG inicial
retu
func funcao1()
private v2:=2
@ row()+2,10 say "Funcao 1 - Variavel v1 = "+str(v1,2,0)
@ row()+2,10 say "Funcao 1 - Variavel v2 = "+str(v2,2,0)
funcao2()
@ row()+2,10 say "Funcao 1 - Retorno Variavel v2 = "+str(v2,2,0)
retu nil
func funcao2()
@ row()+2,10 say "Funcao 2 - Entrada Variavel v2 = "+str(v2,2,0)
v2+=1
retu nil
Código: Selecionar todos
PRG inicial - Variavel v1 = 1
Funcao 1 - Variavel v1 = 1
Funcao 1 - Variavel v2 = 2
Funcao 2 - Entrada Variavel v2 = 2
Funcao 1 - Retorno Variavel v2 = 3
// Aqui vai dar erro, v2 não existe.

Código: Selecionar todos
use ARQUIVO
M->nome := ARQUIVO->nome
...
@ ..,.. get M->nome ...
...
replace ARQUIVO->nome with M->nome
Código: Selecionar todos
procedure main
PublicaGETs()
CarregaGETs()
...
@ ..,.. get M->nome ...
...
SalvaGETs()
EliminaGETs()
return
Function PublicaGETs()
PUBLIC nome
return .t.
Function CarregaGETs()
M->nome := ARQUIVO->nome
return .t.
Function SalvaGETs()
replace ARQUIVO->nome with M->nome
return .t.
Function EliminaGETs()
RELEASE nome
return .t.