Page 1 of 1

Pregunta sobre el return

PostPosted: Thu Jun 12, 2008 2:22 pm
by leandro
Amigos del foro tengan buen dia...

Lo que pasa es que necesito que una funcion me retorne mas de un parametro. Se puede hacer? Lo intente retornando un array, pero no se como capturar cada una de las variables del arreglo...

Alguien me puede ayudar con esto? De antemano gracias

PostPosted: Thu Jun 12, 2008 2:45 pm
by sysctrl2
Leandro , en un xbrowse yo regreso los valores en un arreglo.
para despues mostrarlos en un dialogo con gets,

no se si te refieras a esto.


if lEnter //regresa los valores encontrados ...
aValores := array( 8 )
aValores[1] := (cAlias)->nombre
aValores[2] := (cAlias)->contacto
aValores[3] := (cAlias)->direccion
aValores[4] := (cAlias)->colonia
aValores[5] := (cAlias)->localidad
aValores[6] := (cAlias)->telefono
endif

(cAlias)->( dbcloseArea() )

return ( aValores )



static function _teclas( nKey )
do case
case nKey == VK_INSERT
case nKey == VK_RETURN
oDlg1:end()
lEnter := .t.
case nKey == VK_DELETE
case nKey == VK_F3 //ordenar
case nKey == VK_F6 //buscar
case nKey == VK_F8 //listado
endcase
return (.T.)

Si..

PostPosted: Thu Jun 12, 2008 3:15 pm
by leandro
Si amigo eso es lo que necesito....

Pero que pasa es que no se como sacar los valores del array al momento de llamar la funcion por ejemplo, cuando lo hago retornando una variable lo haria de la siguiente manera:

Code: Select all  Expand view
Funtion numero(a)

IF a=1
  letra:="UNO"
ELSEIF a=2
  letra:="DOS"
ELSEIF a=3
  letra:="TRES"
ELSE
  letra:="OTRO"
ENDIF

Return letra


El resultado que obtendria al momento de llamar la función en el siguiente ejemplo seria DOS:

variablequenecesito:= numero(2)

Ahora lo que necesito es poder decidir cual valor del array me retorna... Pero no se como hacerlo por ejemplo

Code: Select all  Expand view
Funtion numero(a,b,c)

IF a=1
  aletra:= ["UNO","IMPAR","1"]
ELSEIF a=2
  aletra:= ["DOS","PAR","2"]
ELSEIF a=3
  aletra:= ["TRES,"IMPAR","3"]
ELSE
  aletra:= ["OTRO","OTRO","O"]
ENDIF

Return aletra


Entonces la pregunta es?

Como hago para capturar los datos, al momento de llamar la funcion?

ejemplo:

variablequenecesito:=???????

De antemano gracias

PostPosted: Thu Jun 12, 2008 3:17 pm
by ARCC
Buen día para todos...

Leandro:

Prueba con esto a ver si es lo que necesitas:

Code: Select all  Expand view
#include "FiveWin.ch"

Function Main()

   Local aParametro := DevolverArreglo() // Función que devuelve el arreglo

   MsgInfo( aParametro[1] ) // Devuelto de la función DevolverArreglo()
   MsgInfo( aParametro[2] ) // Devuelto de la función DevolverArreglo()
   MsgInfo( aParametro[3] ) // Devuelto de la función DevolverArreglo()
   MsgInfo( aParametro[4] ) // Devuelto de la función DevolverArreglo()
   MsgInfo( aParametro[5] ) // Devuelto de la función DevolverArreglo()
   MsgInfo( aParametro[6] ) // Devuelto de la función DevolverArreglo()

Return Nil

Function DevolverArreglo() // Función que devuelve el arreglo

  Local aArray := Array(6) // Donde Array(6) es el número total de posiciones en el arreglo"

  aArray[1] := "Parametro 1"
  aArray[2] := "Parametro 2"
  aArray[3] := "Parametro 3"
  aArray[4] := "Parametro 4"
  aArray[5] := "Parametro 5"
  aArray[6] := "Parametro X, Donde X es el número total de posiciones en el arreglo"

Return aArray

PostPosted: Thu Jun 12, 2008 3:30 pm
by leandro
ARCC

Amigo si creo que es lo que necesito voy a probarlo y te comento.. :D

PostPosted: Thu Jun 12, 2008 4:10 pm
by GUSPRE
De esta manera:

Local var_nece, a_res

a_res:=funcion_llamada(), var_nece:=a_res[1]..o a_res[2]..o la que necesites

Saludos,