AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Sintaxis WLanguage / Procedimientos WLanguage / Parámetros de un procedimiento
  • Presentación
  • Pasando los parámetros por reference
  • Modo de funcionamiento Default
  • Pasar una control, una ventana o una reporte
  • Pasando los parámetros por valor
  • Presentación
  • Solución 1: Usando soportes dobles
  • Solución 2: Usando parámetros "locales" en la Procedure
  • Parámetro correspondiente a un elemento de proyecto
  • Caso especial
  • Pasando una lista de valores
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Presentación
Los parámetros pueden ser pasados a una Procedure:
Pasando los parámetros por reference

Modo de funcionamiento Default

Por defecto, cuando se llama a un Procedure, los parámetros son pasados por reference (por Variable o por Address). Si el parámetro se modifica en la Procedure, el proceso que llama a la Procedure recuperará el parámetro con su valor modificado.
Para pasar un parámetro por variable a una Procedure, utilice la siguiente sintaxis:
<Procedure name>(<Name of variable passed as parameter>)
Por ejemplo:
Index is int = 1
// Before the call to the procedure, Subscript is set to 1
AddOne(Subscript)
// After the call to the procedure, Subscript is set to 2
// -- Declare the procedure
PROCÉDURE AddOne(Counter)
Counter += 1

Pasar una control, una ventana o una reporte

Al llamar a un procedimiento, los parámetros pueden ser un control, una ventana o un reporte. Este objeto (control, ventana o reporte) se maneja como cualquier objeto "estándar".
Para pasar un elemento como parámetro a una Procedure, utilice la siguiente sintaxis:
<Procedure name>(<Element name>)
Por ejemplo:
// Call the ControlNotVisible procedure
ControlNotVisible(ControlAddress)
// -- Declare the procedure
PROCÉDURE ControlNotVisible(ControlAddress)
ControlAddress..Visible = False
Observaciones:
  • La palabra clave MySelf se utiliza para manipular el control actual.
  • La palabra clave MiVentana se utiliza para manipular la ventana actual.
  • La palabra clave MiInforme se utiliza para manipular el reporte actual.
Pasando los parámetros por valor

Presentación

Durante la llamada a una Procedure, los parámetros pueden ser pasados por valor. Si el parámetro se modifica en el Procedure, el proceso que llama al Procedure recuperará el parámetro con su valor no modificado.
Se pueden utilizar dos métodos para pasar los parámetros por valor:

Solución 1: Usando soportes dobles

Para pasar un parámetro por valor a una Procedure, utilice la siguiente sintaxis:
<Procedure name>((<Name of variable passed as parameter>))
Por ejemplo:
Index is int = 1
// Before the call to the procedure, Subscript is set to 1
AddOne((Subscript))
// After the call to the procedure, Subscript is still set to 1
// -- Declare the procedure
PROCÉDURE AddOne(Counter)
Counter += 1

Solución 2: Usando parámetros "locales" en la Procedure

Al declarar una Procedure, las variables pasadas como parámetro pueden convertirse en locales de esta Procedure. Para ello, el parámetro local debe ser precedido por la palabra clave LOCAL. Por ejemplo:
PROCEDURE MyProc(LOCAL Subscript, LOCAL Counter, Number)
Si este parámetro se modifica en el Procedure, el proceso que llama al Procedure recuperará el parámetro con su valor no modificado.
Observaciones:
  • La palabra clave LOCAL obliga a la copy del elemento pasada como parámetro en los siguientes casos:
    • instancia de clase o instancia de array pasada a un parámetro no mecanografiado.
      Ejemplo:
      Procedure MyProcedure(LOCAL Parameter)
    • instancia de clase pasada a un parámetro tipificado.
      Ejemplo:
      Procedure MyProcedure(LOCAL Parameter is CClass)
  • PCS_SANS_TRADUCTION_US

Parámetro correspondiente a un elemento de proyecto

Si su Procedure está usando elementos del proyecto, hasta la versión 19, el nombre del elemento tenía que ser incluido entre comillas durante la llamada a la Procedure. Por ejemplo:
MyProcedure("WIN_Example")
A partir de la versión 19, se puede pasar el nombre del elemento sin comillas y se puede beneficiar de la finalización sobre el parámetro durante la entrada.
WINDEVWINDEV Mobile Case de windows
Simplemente utilice el atributo de extensión <nombre de ventana>. Se debe utilizar la siguiente sintaxis:
PROCEDURE WindowName(WindowName is string <window name>)
Ejemplo:
// Declare the procedure
PROCÉDURE InputControl(sWindowName is string <window name>)

let i = 1
either ResControl = EnumControl(sWindowName, i)
WHILE ResControl <> ""
i++
Trace ("Processing control " +ResControl+" from the window " + sWindowName)
ResControl = EnumControl(sWindowName, i)
END
En este ejemplo, durante la llamada a la Procedure, el parámetro sWindowName contiene el nombre de la ventana. La terminación propondrá todas las ventanas que se encuentran en el proyecto.
Las llamadas a la Procedure pueden corresponder a las siguientes sintaxis:
  • InputControl(WindowName)
  • InputControl("WindowName")
  • InputControl(Nombre de la cadena Variable que contiene el nombre de la ventana)
WEBDEV - Código Servidor Maletín PageCaso
Simplemente utilice el atributo de extensión <nombre de página>. Se debe utilizar la siguiente sintaxis:
PROCEDURE ProcedureName(PageName is string <page name>)
Ejemplo:
// Declare the procedure
PROCÉDURE InputControl(sPageName is string <page name>)
En este ejemplo, durante la llamada a la Procedure, el parámetro sPageName contiene el nombre de la página. La terminación propondrá todas las páginas que se encuentran en el proyecto.
Las llamadas a la Procedure pueden corresponder a las siguientes sintaxis:
  • InputControl(Nombre de la página)
  • InputControl("Nombre de la página")
  • InputControl(Nombre de la cadena Variable que contiene el nombre de la página)
caja de Reporte case
Simplemente utilice el atributo de extensión <nombre de reporte>. Se debe utilizar la siguiente sintaxis:
PROCEDURE ProcedureName(ReportName is string <report name>)
Ejemplo:
// Declare the procedure
PROCÉDURE Checkdata(sReportname is string <report name>)
En este ejemplo, durante la llamada a la Procedure, el parámetro sReportName contiene el nombre de la reporte. La finalización propondrá todos los informes encontrados en el proyecto.
Las llamadas a la Procedure pueden corresponder a las siguientes sintaxis:
  • InputControl(ReportName)
  • InputControl("ReportName")
  • InputControl(Nombre de la cadena Variable que contiene el nombre de la reporte)
Case de fuentes de datos
Se debe utilizar la siguiente sintaxis:
PROCEDURE ProcedureName(FileName is Data Source)
Ejemplo:
// Declare the procedure
PROCEDURE CheckData(sFileName is Data Source)
En este ejemplo, durante la llamada a la Procedure, el parámetro sFilewName contiene el nombre de una fuente de datos. La finalización propondrá todas las fuentes de datos (archivos, consultas, variables de fuente de datos) que se encuentran en el proyecto..
Las llamadas a la Procedure pueden corresponder a las siguientes sintaxis:
  • CheckData(Archivo)
  • CheckData(Consulta)
  • CheckData("Archivo")
  • CheckData("Consulta")
  • CheckData(Nombre de la cadena Variable que contiene el nombre del archivo o consulta)
  • CheckData(Nombre de la fuente de datos Variable)
Observación: Para asociar la fuente de datos con un archivo de datos (o consulta) existente, todo lo que hay que hacer es añadir un atributo de extensión específico. En este caso, la finalización de automatic le permitirá acceder a los artículos directamente. Para obtener más información, consulte Variable de tipo Data Source.
Caso especial

Pasando una lista de valores

Durante la llamada a un Procedure, los parámetros pueden ser una lista de valores ("[1,2,3]" por ejemplo).
Para pasar una lista de valores a una Procedure como parámetro, use la siguiente sintaxis:
<Procedure name>(<List of values>)
Por ejemplo:
// Call the procedure
MyProcedure([1,2,3])
// -- Declare the procedure
PROCÉDURE MyProcedure(Values)
MyArray is array of int = Values
Observaciones:
  • Si el parámetro Procedure no tiene ningún tipo, la lista de valores se pasa a la Procedure directamente. Como las listas de valores no pueden manejarse directamente, este parámetro sólo puede utilizarse en las características que aceptan las listas de valores:
    • a una función WLanguage que autoriza las listas de valores (HFilter, HReadSeek, ....).
    • asignación en una Variable estructurada (array, clase, estructura, ...).
    • llamada a un usuario Procedure que permite una lista de valores.
  • Si el parámetro de la Procedure es un array, se asigna automáticamente un array y se rellena con los valores encontrados en la lista de valores.
  • Si el parámetro de la Procedure tiene otro tipo, se producirá un error de compilación (o un error de WLanguage en tiempo de ejecución si el parámetro real no tiene ningún tipo).
Overriding WLanguage functions: Puede override WLanguage funciones que aceptan las listas de valores a través de los parámetros "lista de valores", especialmente:
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 27/05/2022

Señalar un error o enviar una sugerencia | Ayuda local