Página 1 de 1

Paso de par

Publicado: Mar Nov 23, 2004 4:22 pm
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

Paso de par

Publicado: Mar Nov 23, 2004 5:21 pm
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
> >
> >
>
>

Paso de par

Publicado: Mar Nov 23, 2004 6:02 pm
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
>
>

Paso de par

Publicado: Mar Nov 23, 2004 6:50 pm
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

Paso de par

Publicado: Mar Nov 23, 2004 6:56 pm
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
>> >
>> >
>>
>>
>
>
--

Paso de par

Publicado: Mar Nov 23, 2004 7:42 pm
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
>> >
>> >
>>
>>
>
>
--

Paso de par

Publicado: Mar Nov 23, 2004 9:04 pm
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

Paso de par

Publicado: Mar Nov 23, 2004 9:08 pm
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