|
|
|
|
- ¿Por qué utilizar el tipo Buffer?
- Asignar una variable de tipo Buffer
- Uso de funciones
- Operadores
- Comparar búferes
- Manipular variables de tipo 'Buffer of' (también llamados búferes fijos)
Buffer (Tipo de variable)
El tipo Buffer corresponde a un área de memoria binaria. Este tipo permite la portabilidad de un código que manipula datos binarios entre una aplicación WINDEV y una aplicación WINDEV Mobile. - En WINDEV, una variable de tipo String puede contener caracteres y datos binarios (por ejemplo, una imagen).
- En WINDEV Mobile, si una variable de tipo String contiene datos binarios, estos datos pueden estar dañados (conversión incorrecta, por ejemplo). Para manipular datos binarios, le recomendamos utilizar variables de tipo Buffer.
El tipo Buffer no tiene un marcador final específico y permite almacenar ceros binarios. Existen dos tipos de variables: - Buffer: Este tipo permite manipular un área de memoria con tamaño dinámico: este se adapta automáticamente al contenido del búfer.
- Buffer of: Este tipo permite manipular un área de memoria cuyo tamaño (en bytes) se establece en tiempo de compilación. Este es un tipo avanzado que permite realizar operaciones específicas en la memoria y utilizar algunas APIs de Windows.
Observación: Las variables de tipo Buffer están codificadas en base64 en JSON y XML. ¿Por qué utilizar el tipo Buffer? En WINDEV, se puede utilizar el siguiente código para manipular bytes como valores binarios: S is string = Charact(1) + Charact(0)
El área de memoria correspondiente es:
El mismo código tiene un comportamiento diferente si se ejecuta en Ansi o Unicode. Para tener el mismo código en ANSI y en UNICODE, la cadena debe ser reemplazada por un búfer. El código pasa a ser: S is Buffer S[[1]] = 1 S[[2]] = 0
Sintaxis
Declarar una variable de tipo Buffer Ocultar los detalles
<Variable name> is Buffer
<Variable name 1>, <Variable name 2> are Buffers
<Variable name>: Nombre de la variable a declarar. De forma predeterminada, una variable de tipo Buffer está vacía.
Declarar e inicializar una variable de tipo Buffer Ocultar los detalles
<Variable name> is Buffer = [<Hex value 1>, <Hex value 2>, ..., <Hex value N>]
<Variable name>: Nombre de la variable a declarar. <Hexa value>: Valor hexadecimal. Ejemplo: b is Buffer = [0x01, 0x02, 0x03]
Declarar una variable de tipo 'Buffer of' Ocultar los detalles
<Variable name> is Buffer of <Buffer size>
<Variable name 1>, <Variable name 2> are Buffers of <Size of buffers>
<Variable name>: Nombre de la variable a declarar. De forma predeterminada, una variable de tipo Buffer está vacía. <Buffer size>: Tamaño del búfer expresado en bytes. De forma predeterminada, el carácter '0' se asigna a una variable de tipo 'Buffer of'.
Ejemplos: MiBuffer is Buffer of 4
MyBuffer = "ABCDE"
MyBuffer = "ZZ"
Observaciones Asignar una variable de tipo Buffer Para asignar una variable de tipo Buffer, utilice una de las siguientes sintaxis: - asignar una cadena a una variable Buffer:
<Nombre de variable Buffer> = <Mi Cadena>. Por ejemplo:
MyBuffer is Buffer
MyBuffer = "WINDEV is great"
- asignar un byte a una variable de tipo Buffer:
<Nombre de la variable Buffer> [[<Índice del byte>]] = <Código ASCII del byte>. Por ejemplo:
MyBuffer is Buffer MyBuffer[[1]] = 65 // MyBuffer contains "A"
Uso de funciones - Las funciones Left, Right y Middle se pueden utilizar en variables de tipo Buffer. Para obtener más información, consulte la página de ayuda sobre estas funciones.
No disponible. - La función Length permite conocer el tamaño real de los datos de la variable de tipo Buffer (en bytes).
Operadores El operador [[ ]] permite acceder a: - un byte de la variable de tipo Buffer. Por ejemplo:
MyBuffer is Buffer MyBuffer = "WINDEV is great" MyBuffer[[1]] = "W"
- una parte de la variable de tipo Buffer. Por ejemplo:
MyBuffer is Buffer MyBuffer = "WINDEV is great" Info(MyBuffer[[8 TO 15]])
Comparar búferes Puede comparar un búfer o una parte de un búfer con valores específicos. Por ejemplo, puede escribir: IF MyBuffer = [1,2,3] THEN ...
IF MyBuffer[1 ON 2] = [1,2] THEN ... Manipular variables de tipo 'Buffer of' (también llamados búferes fijos) Los búferes fijos se utilizan de la misma forma que los búferes simples. No obstante, cabe señalar algunas diferencias. En tiempo de ejecución, se desconoce el tamaño real de los datos que se encuentran en la variable de tipo Buffer: - Los datos escritos se truncan si superan el tamaño de la variable de tipo Buffer.
- Al escribir datos más pequeños que el tamaño de la variable de tipo Buffer, la sección no escrita de la variable Buffer conserva su valor anterior.
Para manipular variables de tipo Buffer, se recomienda almacenar el tamaño real del búfer en una variable de tipo Integer. Recordatorio: el tipo Buffer gestiona automáticamente su tamaño. Cuando se utiliza un búfer fijo, se recomienda copiar rápidamente su valor en un búfer automático. // Use an API that returns the size of a buffer bFixedBuffer is Buffer of 200 nSize is int // Call the API nSize = API(<API name>, <Parameters>, bFixedBuffer, 200) // Copy the buffer bBuffer is Buffer bBuffer = Left(bFixedBuffer, nSize)
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|