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 /  / Tipos avanzados
  • Asignar un Procedure Variable
  • Asignación múltiple de un Procedure Variable
  • Orden de ejecución de los procedimientos
  • Pasando los parámetros de Procedure por reference o por valor
  • Llamada a las Procedure s encontradas en un Procedure Variable
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
El tipo Procedure se utiliza para manipular:
  • los procedimientos o métodos encontrados en el proyecto.
  • los procedimientos o métodos en una Component interna .
  • los procedimientos o métodos en un Component externo.
Este tipo de Variable es muy useful, especialmente:
  • para optimizar el tiempo de inicio de los procedimientos. La utilización de este tipo de Variable permite sustituir los procedimientos ejecutados por ExecuteProcess.
  • para implementar algoritmos avanzados (eventos personalizados, notificaciones, ....).
Esta página de ayuda presenta:
Ejemplo
p is Procédure
// Assign the Procedure variable with the "MyProcedure" procedure found in the project
p = MyProcedure
// Run the procedure
p(5)
// Equivalent to MyProcedure(5)
Observaciones

Asignar un Procedure Variable

Una variable de tipo Procedure puede ser asignada con:
  • a Procedure conocido en el proyecto.
    Se debe utilizar la siguiente sintaxis:
    <Name of Procedure variable> = <Procedure>

    Por ejemplo:
    p is Procédure
    p = CheckExistence

    Observaciones:
    • El parámetro <Procedure> debe corresponder a un Procedure encontrado en el proyecto.
    • El parámetro <Procedure> no debe estar entre comillas.
    • El parámetro <Procedure> no debe ir seguido de parámetros de llamada.
    • El parámetro <Procedure> no debe corresponder al nombre de un Procedure interno.
  • WINDEVWEBDEV - Código ServidoriPhone/iPad un procedimiento compilado dinámicamente con la función Compilar.
    Se debe utilizar la siguiente sintaxis:
    <Name of Procedure variable> = Compile(<Procedure code>)

    or

    <Name of Procedure variable> =
    Compile(<Procedure Name>, <Procedure Code>)

    Por ejemplo:
    p is Procédure
    p = Compile("RESULT n1 + n2")

    Observaciones:
    • Si se especifica el nombre del Procedure, el Procedure también puede ser ejecutado por Ejecute y ExecuteProcess.
    • Por defecto, el Procedure compilado dinámicamente es un Procedure global. Para definir una Procedure local, debe utilizar la sintaxis que define el nombre de la Procedure para especificar el elemento solicitado en el nombre de la Procedure.
  • un método de clase.
    Se debe utilizar la siguiente sintaxis:
    <Name of Procedure variable> = <Method>

    Observaciones:
    • El parámetro <Método> puede corresponder a un método de la clase actual o de una clase base.
    • Si <Método> es un método de instancia, se debe utilizar la siguiente notación:
      <An_Object>.<Method>
Otras sintaxis posibles
  • También es posible volver a copiar los procedimientos de una variable de tipo Procedure en otra variable de tipo Procedure. La sintaxis es la siguiente:
    <Name of destination Procedure variable> =
    <Name of Source Procedure Variable>

    Observación: Es una copia de Variable: cualquier modificación hecha a una de las variables no se aplicará a la otra..
  • También es posible buscar un procedimiento identificado por su nombre y asignarlo a una variable de tipo Procedure durante la ejecución. En este caso, se debe utilizar la siguiente sintaxis:
    <Name of Procedure variable> = <Procedure name (with quotes)>

    Observación: Usar esta sintaxis para asignar una variable de tipo Procedure lleva bastante tiempo porque el nombre del procedimiento se busca en todos los procedimientos del proyecto.
  • Asignación de reference (<- operador)
    La asignación tomando reference fuerza al elemento de destino a reference a la misma área de datos que el elemento fuente.
    Por lo tanto, una variable de tipo Procedure puede ser manipulada por otra variable de tipo Procedure. Para ello, se debe obtener una referencia en la misma variable Procedure. Cualquier modificación futura de una de las variables se aplicará a la otra..
    Se debe utilizar la siguiente sintaxis:
    <Name of destination Procedure variable> <- <Name of source Procedure variable>

Asignación múltiple de un Procedure Variable

Se pueden asignar varios procedimientos o métodos a una variable de tipo Procedure mediante el operador "+=". Los diferentes procedimientos serán llamados uno tras otro.
Por ejemplo:
p is Procédure
p += Proc1
p += Proc2
Observación: Para borrar un Procedure de un Procedure Variable, tienes la posibilidad de usar el operador "-="..
Por ejemplo:
p is Procédure
p += Proc1
p += Proc2

...

p -= Proc2

Orden de ejecución de los procedimientos

Tiene la posibilidad de sustituir o insertar un Procedure antes o después de los otros Procedure en un elemento Procedure mediante Before y Después.
Ejemplo:
p is procedure
p = MyProcedure
p.After = MyProcedureCalledAfter
p.Before = MyProcedureCalledBefore
 
// The order for calling the procedures will be:
// - MyProcedureCalledBefore
// - MyProcedure
// - MyProcedureCalledAfter
p()

Pasando los parámetros de Procedure por reference o por valor

Para manipular un Procedure como parámetro de otro Procedure, debes usar un parámetro tecleado. Se debe utilizar la siguiente sintaxis:
  • para pasar los parámetros de reference:
    PROCEDURE <ProcedureName>(MyProcedure is Procedure)
  • pasar parámetros por valor:
    PROCEDURE <ProcedureName>(LOCAL MyProcedure is Procedure)
Las posibles llamadas al <Procedure Name> Procedure son:
  • llamar mientras se especifica un Procedure conocido por el proyecto: se debe utilizar la siguiente sintaxis:
    ProcedureName(<Project procedure>)

    Observaciones:
    • El parámetro <Proyecto Procedure> debe corresponder a un Procedure encontrado en el proyecto.
    • El parámetro <Project Procedure> no debe estar entre comillas.
    • El parámetro <Project Procedure> no debe ir seguido de accesos directos.
  • mientras se especifica un método de clase: se debe utilizar la siguiente sintaxis:
    ProcedureName(<Method>)

    Observaciones:
    • El parámetro <Método> puede corresponder a un método de la clase actual o de una clase base.
    • Si <Método> es un método de instancia, debe utilizarse la siguiente notación: <Objeto>.<Método>.
  • Llamada con referencia a un Procedure Variable: se debe utilizar la siguiente sintaxis:
    ProcedureName(<Name of Procedure variable>)
  • llamada con búsqueda en tiempo de ejecución de un Procedure identificado por su nombre: se debe utilizar la siguiente sintaxis:
    ProcedureName(<Procedure name (with quotes)>)

Llamada a las Procedure s encontradas en un Procedure Variable

La llamada a las Procedure s que se encuentran en una variable de Procedure se realiza por la sintaxis estándar de las Procedure s. Esta sintaxis se usa directamente en el Procedure Variable con paréntesis que contienen 0, 1 o varios parámetros:
<Name of Procedure variable> ([<Parameter 1> [, ...[, <Parameter N>]]])
Ejemplos:
p1 is Procédure
p1 = Proc1
p1()

p2 is Procédure
p2 = Proc2
p2(1,2)
Si la variable Procedure contiene varios Procedure s, todos los Procedure s se ejecutan según el orden de las asignaciones.
p3 is Procédure
p3 += Proc3_1
p3 += Proc3_2
p3("parameter") // calls Proc3_1 and Proc3_2
Gestión del valor de retorno
  • Si la variable Procedure contiene un solo Procedure, la llamada devuelve el valor de retorno del Procedure.
  • Si la variable Procedure contiene varios Procedure s, la llamada devuelve el valor de retorno del último Procedure llamado.
Versión mínima requerida
  • Versión 17
Esta página también está disponible para…
Comentarios
Exemplo Procedure
// Procedure - Duas Maneiras de Mandar Informacao

PROCEDURE rotina_teste(d_recebe_data is Date="", ...
s_recebe_texto is string="")
Info(d_recebe_data)
Info(s_recebe_texto)

//Chama Procedure
//d_manda_data is date=EDT_Date
//s_manda_texto is string=EDT_Text1
//
//rotina_teste(d_manda_data,s_manda_texto)

rotina_teste.d_recebe_data=EDT_Date
rotina_teste.s_recebe_texto=EDT_Text1
rotina_teste()
//Em vez de Mandar os parametros, dentro de uma linha
//mandei os parametros individual

//Blog com Video e Exemplo

http://windevdesenvolvimento.blogspot.com.br/2017/02/aula-1068-windev-comandos-13-procedure.html

https://www.youtube.com/watch?v=EPDTU569Pu4



De matos
21 02 2017

Última modificación: 16/03/2023

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