In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Paso de par

Foro público de Xailer en español
Responder
jmartial
Mensajes: 397
Registrado: Vie May 20, 2005 8:53 pm

Paso de par

Mensaje por jmartial »

¿Cómo se pasan parámetros?
He visto que la clase application recibe un array con los parámetros, pero,
si tengo que recibir 20 parámetros y no los recibo, antes lo interrogaba
viendo si era NIL, pero ahora como es un array cómo lo interrogo???
Antes
Main()
Parameters a,b,c,d
DEFAULT a TO "parametro1"
DEFAULT b TO "parametro2"
DEFAULT c TO "parametro3"
DEFAULT d TO "parametro4"
Ahora como lo hago si sólo me pasa el d por ejemplo? si es un array
Un Saludo,
Joaquín
jmartial
Mensajes: 397
Registrado: Vie May 20, 2005 8:53 pm

Paso de par

Mensaje por jmartial »

Ignacio,
Si de 20 recibo el 17 UNICAMENTE, ¿como lo interrogo si a priori no sé cual
voy a recibir?
Saludos,
Joaquin
"Ignacio Ortiz" <NoNameToAvoidSpam@ozs.com> escribió en el mensaje
news:41a36d34$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Joaquin,
>
> with object Application
> if Len( :aArguments ) >= 20
> Msginfo( "El vigésimo parametro", :aArguments[ 20 ] )
> endif
> end with
>
> Saludos
>
> --
> Ignacio Ortiz
> www.xailer.com
> "Joaquín Martínez" <jmartial@interbook.net> escribió en el mensaje
> news:41a3691a$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> > ¿Cómo se pasan parámetros?
> >
> > He visto que la clase application recibe un array con los parámetros,
> > pero,
> > si tengo que recibir 20 parámetros y no los recibo, antes lo interrogaba
> > viendo si era NIL, pero ahora como es un array cómo lo interrogo???
> >
> > Antes
> > Main()
> > Parameters a,b,c,d
> >
> > DEFAULT a TO "parametro1"
> > DEFAULT b TO "parametro2"
> > DEFAULT c TO "parametro3"
> > DEFAULT d TO "parametro4"
> >
> >
> > Ahora como lo hago si sólo me pasa el d por ejemplo? si es un array
> >
> > Un Saludo,
> > Joaquín
> >
> >
>
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9253
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Paso de par

Mensaje por ignacio »

Joaquin,
with object Application
if Len( :aArguments ) >= 20
Msginfo( "El vigésimo parametro", :aArguments[ 20 ] )
endif
end with
Saludos
--
Ignacio Ortiz
www.xailer.com
"Joaquín Martínez" <jmartial@interbook.net> escribió en el mensaje
news:41a3691a$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> ¿Cómo se pasan parámetros?
>
> He visto que la clase application recibe un array con los parámetros,
> pero,
> si tengo que recibir 20 parámetros y no los recibo, antes lo interrogaba
> viendo si era NIL, pero ahora como es un array cómo lo interrogo???
>
> Antes
> Main()
> Parameters a,b,c,d
>
> DEFAULT a TO "parametro1"
> DEFAULT b TO "parametro2"
> DEFAULT c TO "parametro3"
> DEFAULT d TO "parametro4"
>
>
> Ahora como lo hago si sólo me pasa el d por ejemplo? si es un array
>
> Un Saludo,
> Joaquín
>
>
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Paso de par

Mensaje por jfgimenez »

Joaquín,
> Si de 20 recibo el 17 UNICAMENTE, ¿como lo interrogo si a priori no sé
> cual
> voy a recibir?
Creo que en esto estás un poco confundido; me explico:
A diferencia de las funciones, donde puedes llamarlas así:
MiFuncion( ,,,,,, "hola" )
al ejecutar un programa, NO se pueden dejar parámetros en blanco, sino que
todos los parámetros que recibe van en orden.P.ej.:
Harbour hola.prg /n /w /s
Aquí se reciben los parámetros:
1) "hola.prg"
2) "/n"
3) "/w"
4) "/s"
En todo caso, lo que tienes que hacer es reconocer qué significa cada uno de
los parámetros que recibes y tomar las acciones oportunas.
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9253
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Paso de par

Mensaje por ignacio »

Joaquin,
Lo que dices es imposible, para recibir el número 17, NECESARIAMENTE has de haber recibido del número 1 al 16:
MIPROG.EXE par1 par2 par3 par4 ... par17
Len( Application:Arguments ) te da el total de argumentos pasados, en el ejemplo, 17
Un saludo

--
Ignacio Ortiz
www.xailer.com
"Joaquí­n Martí­nez" <jmartial@interbook.net> escribió en el mensaje news:[email=41a376c3@ozsrv2.ozlan.local...]41a376c3@ozsrv2.ozlan.local...[/email]
> Ignacio,
>
> Si de 20 recibo el 17 UNICAMENTE, ¿como lo interrogo si a priori no sé cual
> voy a recibir?
>
> Saludos,
> Joaquin
>
>
> "Ignacio Ortiz" <NoNameToAvoidSpam@ozs.com> escribió en el mensaje
> news:41a36d34$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> Joaquin,
>>
>> with object Application
>> if Len( :aArguments ) >= 20
>> Msginfo( "El vigésimo parametro", :aArguments[ 20 ] )
>> endif
>> end with
>>
>> Saludos
>>
>> --
>> Ignacio Ortiz
>> www.xailer.com
>> "Joaquí­n Martí­nez" <jmartial@interbook.net> escribió en el mensaje
>> news:41a3691a$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> > ¿Cómo se pasan parámetros?
>> >
>> > He visto que la clase application recibe un array con los parámetros,
>> > pero,
>> > si tengo que recibir 20 parámetros y no los recibo, antes lo interrogaba
>> > viendo si era NIL, pero ahora como es un array cómo lo interrogo???
>> >
>> > Antes
>> > Main()
>> > Parameters a,b,c,d
>> >
>> > DEFAULT a TO "parametro1"
>> > DEFAULT b TO "parametro2"
>> > DEFAULT c TO "parametro3"
>> > DEFAULT d TO "parametro4"
>> >
>> >
>> > Ahora como lo hago si sólo me pasa el d por ejemplo? si es un array
>> >
>> > Un Saludo,
>> > Joaquí­n
>> >
>> >
>>
>>
>
>
--
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
jmartial
Mensajes: 397
Registrado: Vie May 20, 2005 8:53 pm

Paso de par

Mensaje por jmartial »

Gracias a los dos,
no es una cosa que use demasiado, así­ que no conocí­a el detalle de que no es como el paso de parámetros en funciones.
Saludos,
Joaquí­n
"Ignacio Ortiz" <NoNameToAvoidSpam@ozs.com> escribió en el mensaje news:41a379df$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
Joaquin,
Lo que dices es imposible, para recibir el número 17, NECESARIAMENTE has de haber recibido del número 1 al 16:
MIPROG.EXE par1 par2 par3 par4 ... par17
Len( Application:Arguments ) te da el total de argumentos pasados, en el ejemplo, 17
Un saludo

--
Ignacio Ortiz
www.xailer.com
"Joaquí­n Martí­nez" <jmartial@interbook.net> escribió en el mensaje news:[email=41a376c3@ozsrv2.ozlan.local...]41a376c3@ozsrv2.ozlan.local...[/email]
> Ignacio,
>
> Si de 20 recibo el 17 UNICAMENTE, ¿como lo interrogo si a priori no sé cual
> voy a recibir?
>
> Saludos,
> Joaquin
>
>
> "Ignacio Ortiz" <NoNameToAvoidSpam@ozs.com> escribió en el mensaje
> news:41a36d34$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> Joaquin,
>>
>> with object Application
>> if Len( :aArguments ) >= 20
>> Msginfo( "El vigésimo parametro", :aArguments[ 20 ] )
>> endif
>> end with
>>
>> Saludos
>>
>> --
>> Ignacio Ortiz
>> www.xailer.com
>> "Joaquí­n Martí­nez" <jmartial@interbook.net> escribió en el mensaje
>> news:41a3691a$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> > ¿Cómo se pasan parámetros?
>> >
>> > He visto que la clase application recibe un array con los parámetros,
>> > pero,
>> > si tengo que recibir 20 parámetros y no los recibo, antes lo interrogaba
>> > viendo si era NIL, pero ahora como es un array cómo lo interrogo???
>> >
>> > Antes
>> > Main()
>> > Parameters a,b,c,d
>> >
>> > DEFAULT a TO "parametro1"
>> > DEFAULT b TO "parametro2"
>> > DEFAULT c TO "parametro3"
>> > DEFAULT d TO "parametro4"
>> >
>> >
>> > Ahora como lo hago si sólo me pasa el d por ejemplo? si es un array
>> >
>> > Un Saludo,
>> > Joaquí­n
>> >
>> >
>>
>>
>
>
--
jmartial
Mensajes: 397
Registrado: Vie May 20, 2005 8:53 pm

Paso de par

Mensaje por jmartial »

Gracias,
Muy buena idea :-)
Joaquín
"José Lalín" <dezac@corevia.com> escribió en el mensaje
news:41a39ad9$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>
> Joaquín,
>
> abundando en el ejemplo que pone Jose F., puedes usar el guión como
> separador de opciones, tal como hemos usado siempre en Clipper, de este
> modo no estás sujeto a ningún orden en el paso de parámetros.
>
> Con un ejemplo se ve mucho mejor:
>
> //--
> FUNCTION Main()
>
> AEval( Application:Arguments, {|arg| CheckArg( arc ) } )
>
> RETURN Nil
>
> FUNCTION CheckArg( cArg )
>
> DO CASE
> CASE cArg == "-r"
> AppReindexar()
> CASE cArg == "-a"
> AppAdmin()
> ENDCASE
>
> RETURN Nil
> //--
>
> Espero que te sirva.
>
> Saludos,
> José Lalín
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

Paso de par

Mensaje por jlalin »

Joaquí­n,
abundando en el ejemplo que pone Jose F., puedes usar el guión como
separador de opciones, tal como hemos usado siempre en Clipper, de este
modo no estás sujeto a ningún orden en el paso de parámetros.
Con un ejemplo se ve mucho mejor:
//--
FUNCTION Main()
AEval( Application:Arguments, {|arg| CheckArg( arc ) } )
RETURN Nil
FUNCTION CheckArg( cArg )
DO CASE
CASE cArg == "-r"
AppReindexar()
CASE cArg == "-a"
AppAdmin()
ENDCASE
RETURN Nil
//--
Espero que te sirva.
Saludos,
José Lalí­n
Responder