Page 1 of 1

Concatenar una variable.

Posted: Wed Jan 14, 2015 4:31 pm
by Yessica
Buen día amigos:

Acudo a ustedes para su colaboración trataré de explicarme, poniendo el código.

Local Var1:= "CARTERA"
Local Var2:= "VENCIDA"
Local num_Var := "0"

Antes yo podía concatenar de la siguiente manera:

num_Var := Alltrim(Str( val(num_Var)+1 )) // Incremento ahora num_Var es 1

? Var&num_Var // Resultado CARTERA, esto es como decir: muestra lo que tiene la variable Var1.
num_Var := Alltrim(Str( val(num_Var)+1 )) // Incremento ahora num_Var es 2
? Var&num_Var // Resultado VENCIDA

Actualmente estoy usando Sistema Operativo Windows 8.1, FWH 14.12, Harbour 3.2 y al compilar me muestra el siguiente error:

Error E00042 Macro of declared symbol 'Var&num_var'

Podrían ayudarme en como hacerlo ahora, para poder concatenar ?, muchas gracias esto me és muy urgente.

Atte.
Yessica

Re: Concatenar una variable.

Posted: Wed Jan 14, 2015 4:42 pm
by Antonio Linares
Yessica,

No es mucho más sencillo que hagas esto ?

? { "CARTERA", "VENCIDA" }[ Val( num_var ) ]

Cuanto menos uses las macros mejor :-)

Re: Concatenar una variable.

Posted: Wed Jan 14, 2015 5:42 pm
by Yessica
Antonio Linares wrote:Yessica,

No es mucho más sencillo que hagas esto ?

? { "CARTERA", "VENCIDA" }[ Val( num_var ) ]

Cuanto menos uses las macros mejor :-)
Ok si es buena la idea, pero resulta que actualmente el sistema tiene un sin fin de variables publicas (mal hecho no debió haber sido así), entonces tengo que ajustarme a la programación que se tiene en el sistema, para ponerte un ejemplo usaron lo siguiente:

Public E1,E2,E3,E4,E5.......etc, hasta llegar a E200

Ahora cada variable le asignan diferente información. Se valida desde la variable E17 de la siguiente manera:

num_Var := "17"
While m->E&num_Var != "FIN"

Aquí van haciendo el recorrido de las variables desde la E17, hasta que encuentre una que tenga el contenido "FIN"
y a la vez van validando el contenido de las variables, ejemplo:

If m->E&num_Var == "CONTRATO"
Realiza _
EndIf

Asi sucesivamente dependiendo del contenido de la variable.
num_Var := Alltrim(Str( val(num_Var)+1 ))
EndDo

Cómo te digo, no puedo cambiar la forma en que lo hacen, puesto que sería pegarle a todo el código, donde usan asi las variables.
Por ello me es necesario saber ahora de que manera puedo concatenar.

Gracias Master ojalá y pueda ayudarme.

Re: Concatenar una variable.

Posted: Wed Jan 14, 2015 5:58 pm
by acuellar
Jessica

Quizas esto te ayude. El & sólo funciona al comienzo de la variable

Code: Select all

 Var1:= "CARTERA"
   Var2:= "VENCIDA"
   num_Var := "0"


num_Var := Alltrim(Str( val(num_Var)+1 )) 
cCad:="Var"+num_Var
?&cCad
num_Var := Alltrim(Str( val(num_Var)+1 )) 
cCad:="Var"+num_Var
?&cCad 
 
Saludos,

Adhemar

Re: Concatenar una variable.

Posted: Wed Jan 14, 2015 6:05 pm
by acuellar
También se puede

Code: Select all

 ?&("Var"+num_Var)
 
Saludos,

Adhemar

Re: Concatenar una variable.

Posted: Wed Jan 14, 2015 8:03 pm
by Yessica
acuellar wrote:Jessica

Quizas esto te ayude. El & sólo funciona al comienzo de la variable

Code: Select all

 Var1:= "CARTERA"
   Var2:= "VENCIDA"
   num_Var := "0"


num_Var := Alltrim(Str( val(num_Var)+1 )) 
cCad:="Var"+num_Var
?&cCad
num_Var := Alltrim(Str( val(num_Var)+1 )) 
cCad:="Var"+num_Var
?&cCad 
 
Saludos,

Adhemar
Gracias por tu pronta contestación Adhemar:

Mira probé de las dos formas que me dijiste y aun no logro concatenar el nombre de la variable.

Me marca que no Existe la Variable Var1.

Re: Concatenar una variable.

Posted: Wed Jan 14, 2015 8:23 pm
by acuellar
Jessica

Quítale el Local ó declararla como Private

Saludos,

Adhemar

Re: Concatenar una variable.

Posted: Wed Jan 14, 2015 9:54 pm
by Yessica
acuellar wrote:Jessica

Quítale el Local ó declararla como Private

Saludos,

Adhemar

Pues nada sigue igual el problema

Re: Concatenar una variable.

Posted: Wed Jan 14, 2015 11:24 pm
by Armando
Jessica:

Prueba así

Code: Select all

cVar := "BIT_A"+STRZERO(nVez,2,0)
 
Saludos

Re: Concatenar una variable.

Posted: Wed Jan 14, 2015 11:26 pm
by cnavarro
Asi, me funciona a mi

Code: Select all

MEMVAR cVar1
MEMVAR cVar2
MEMVAR nG


.../...

cVar1  := "CARTERA"
cVar2  := "VENCIDA"
nG     := 1
? &("cVar"+AllTrim( Str(nG) ))

 

Re: Concatenar una variable.

Posted: Wed Jan 14, 2015 11:43 pm
by Yessica
cnavarro wrote:Asi, me funciona a mi

Code: Select all

MEMVAR cVar1
MEMVAR cVar2
MEMVAR nG


.../...

cVar1  := "CARTERA"
cVar2  := "VENCIDA"
nG     := 1
? &("cVar"+AllTrim( Str(nG) ))

 
Muuuchas gracias al parecer esta fue la buena. Ahora a probar lo demás. Este foro es buenísimo y las personas aquí son bellas e irrepetibles, venga gracias a todos.

Compañero es usted muy amable. Aquí nos estaremos leyendo.

Re: Concatenar una variable.

Posted: Fri Jan 16, 2015 2:39 pm
by Yessica
cnavarro wrote:Asi, me funciona a mi

Code: Select all

MEMVAR cVar1
MEMVAR cVar2
MEMVAR nG


.../...

cVar1  := "CARTERA"
cVar2  := "VENCIDA"
nG     := 1
? &("cVar"+AllTrim( Str(nG) ))

 
Sera lo mismo para campos de tablas?

Re: Concatenar una variable.

Posted: Fri Jan 16, 2015 9:38 pm
by horacio
Si, es lo mismo

Saludos