|
|
|
|
- Estructuras de declaración
- Tipo de estructura miembros
- Declarar un miembro de array en una estructura
- copy homónima de una estructura
- Serialización de los miembros de una estructura
- ¿Qué tipos "avanzados" pueden ser miembros?
- Pasar una estructura como parámetro a una Procedure
- Agregar el contenido de una estructura a un array de estructuras sin utilizar una variable de la estructura
- Límites de una estructura
- Diferencias entre la versión 8 y la versión 9
Estructura (tipo Variable)
Una estructura es un tipo de datos personalizado. Una estructura agrupa diferentes tipos de elementos. Observación: Si está manejando variables personalizadas, le aconsejamos que declare: - un tipo de estructura si se utilizan varias variables de este tipo en diferentes procesos del proyecto.
- un Variable compuesto si se usa un solo Variable de este tipo en su proyecto (para pasar parámetros a un API por ejemplo).
// Declare a structure ProductRef is Structure SCode is int PdtCode is fixed string on 10 END
// Declare a structure variable ProductRef is Structure SCode is int PdtCode is fixed string on 10 END Armchair is ProductRef
// Handle a member of a structure variable ProductRef is Structure SCode is int PdtCode is fixed string on 10 END Armchair is ProductRef Armchair:SCode = 7 Armchair:PdtCode = "Furniture"
// Declare and initialize the members of a structure 3dPoint is Structure x is int y is int z is int END
p1 is 3dPoint = [0, 0, 50]
Sintaxis <Structure name>: Nombre de la estructura a declarar <Structure members>: Declaraciones de variables encontradas en la estructura. Estos Variable se denominan miembros del compuesto Variable . <END>: Fin de la declaración de Variable. <Variable name>: Nombre de la estructura Variable a declarar. <Structure name>: Nombre de una estructura que se ha declarado de antemano.
Manejar a un miembro de una estructura Variable Ocultar los detalles
<Name of structure variable>:<Name of structure member>
<Name of structure variable>: Nombre de la estructura Variable a utilizar. <Name of structure member>: Nombre del miembro de la estructura a utilizar. Observaciones Estructuras de declaración Si una estructura <Nombre de la estructura> se declara: - en el código del proyecto, se puede declarar una variable de tipo <Nombre de estructura> en todo el proyecto.
- en el código de declaración de las variables globales de una ventana, se puede declarar una variable de tipo <Nombre de la ventana> en la ventana, en sus controles y en los procedimientos locales asociados.
- En el código de apertura de un reporte, se puede declarar una variable de tipo <Nombre de la estructura> en el reporte, en los controles del reporte y en los procedimientos locales asociados.
- en el código de declaración de una clase, se podrá declarar una variable de tipo <Structure name> en la clase y en sus métodos. Atención: "Es estructura" debe colocarse necesariamente antes que "es clase".
- en un proceso, se puede declarar una variable de tipo <Nombre de estructura> en dicho proceso.
Tipo de estructura miembros Los miembros de una estructura pueden tener los siguientes tipos: Cualquier otro tipo de datos (Variable compuesta, constante, ...) está prohibido. Declarar un miembro de array en una estructura - Declarar un miembro de tipo array simple:
Las dimensiones de array se fijan cuando se declara array.. Las dimensiones de array pueden ser modificadas por Dimensión. - Declarar un miembro array dinámico:
Las dimensiones de array deben definirse (lo que significa que debe asignarse el array) antes de utilizar el array. Por ejemplo:
// Declare a structure Struct is Structure x1 is int x2 is dynamic array // Declare the array END // Declare a structure variable MyStruct is Struct // Allocate the array MyStruct.x2 = new dynamic array of 4,7 int // Use the array MyStruct:x2[1,1] = 25
copy homónima de una estructura El operador => permite realizar una copia homónima de una variable de estructura. Este copy homónimo también se puede realizar usando el operador =. Precaución, el copy se realiza miembro a miembro: sólo se copiarán los miembros con el mismo nombre. Los miembros con nombres diferentes o inexistentes serán ignorados. Ejemplo: // Declare a structure StructImportCustomer is Structure LastName is string FirstName is string Company is string Address is string ZC is string City is string END
StructInternalCustomer is Structure LastName is string FirstName is string Company is string Address is string FullAddress is string ZC is string City is string Country is string END
NewCustomer is StructImportCustomer
CurrentCustomer is StructInternalCustomer
CurrentCustomer = NewCustomer // the FullAddress and Country members are not filled
Serialización de los miembros de una estructura Por Default, todos los miembros de una estructura son seriados. Tiene la capacidad de gestionar con precisión la serialización de cada miembro de una estructura.: - especificando el miembro que será serializado durante la llamada a serialize.
Esta operación se puede realizar en todos los tipos de serialización (WXML, JSON, binario).. - cambiando el nombre del miembro durante la serialización con serialize.
Esta operación sólo se puede realizar durante una serialización binaria..
Esta gestión de serialización se realiza utilizando la siguiente sintaxis: - Serialización (o no) de un miembro:
<Member name> is <Type of member> [, Serialize = <True/False>] - Serialización y cambio de nombre de miembro:
<Member name> is <Type of member> [, Serialize = <New name>]
Ejemplo: Cl is Structure // Serialized member SerializedMember is int // Non-serialized member NonSerializedMember is string, Serialize = False // Member renamed during the serialization RenamedMember is int, Serialize = "NewMemberName" END
¿Qué tipos "avanzados" pueden ser miembros? Una Variable "avanzada" puede ser miembro de otra Variable"avanzada . La tabla a continuación presenta las diferentes combinaciones: | | | | | | Compuesto Variable | Estructura | Clase | Array |
---|
Compuesto Variable | No | No | No | No | Estructura | Sí | Sí | Sí | Sí | Clase | Sí | Sí | Sí | Sí | Array | Sí | Sí | Sí | No |
Pasar una estructura como parámetro a una Procedure Se puede pasar una variable "estructura" como parámetro a un programa Procedure. Para ello, utilice la siguiente sintaxis: <Procedure name>(<Name of structure variable>) Por ejemplo: ProductRef is Structure SCode is int PdtCode is fixed string on 10 END Armchair is ProductRef // Call the DisplayProduct procedure DisplayProduct(Armchair)
Agregar el contenido de una estructura a un array de estructuras sin utilizar una variable de la estructura Si utiliza un array de estructuras con pocos miembros, puede ser más fácil agregar directamente una estructura utilizando el operador [ ] (corchetes). Por ejemplo, para la siguiente estructura: // Structure to store a letter and its ASCII code STKey is Structure sKey is string nAsciiCode is int END // Array of structures arrKeys is array of STKey
En la mayoría de los casos, el contenido se agrega utilizando una variable de un tipo declarado en la estructura: // Temporary structure for the addition stAKey is STKey // Stores the letter A stAKey.sKey = "A" stAKey.nAsciiCode = Asc("A") arrKeys.Add(stAKey)
Con el operador [ ], se obtiene una mejor legibilidad:
// Stores the letter A arrKeys.Add(["A", Asc("A")])
Límites de una estructura - No se permite la herencia de la estructura: una estructura no puede heredar de otra estructura.
- El acceso a un miembro de una estructura no puede ser restricted: todos los miembros de una estructura son public.
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|