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 / 
  • Presentación
  • ¿Por qué utilizar el tipo Buffer?
  • Tipo Buffer: Sintaxis y uso
  • Declarar una variable de tipo Buffer
  • Declarar e inicializar una variable de tipo Buffer
  • Uso de variables de tipo Buffer
  • Tipo 'Buffer on': Sintaxis y uso avanzado
  • Declarar una variable de tipo Buffer On
  • Uso de variables de tipo 'Buffer on' (llamadas Buffers fijos)
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 "Buffer" (Tipo de variable)
Presentación
El tipo Buffer corresponde a un área de memoria binaria.
Con este tipo, un código que manipula formato binario puede ser compartido entre una aplicación WINDE estándar y una aplicación WINDEV Mobile.
En WINDEV, una cadena Variable puede contener tanto caracteres como datos binarios (un Image por ejemplo).
En WINDEV Mobile, si una variable de tipo Character string contiene datos binarios, estos datos pueden estar dañados (conversión incorrecta, por ejemplo). Para los datos binarios de manipular, se recomienda utilizar variables Buffer.
El tipo de búfer no tiene un final específico Marker 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 buffer.
  • Buffer on: Este tipo permite manipular un área de memoria cuyo tamaño (en bytes) se define durante la compilación. Este es un tipo avanzado que permite realizar operaciones específicas en la memoria y utilizar algunas API de Windows.
Observación: Las variables de tipo Buffer están codificadas en base64 en JSON y XML.
WEBDEV - Código Navegador En el código del navegador, el tipo Buffer tiene múltiples limitaciones: se utiliza sobre todo con BufferToHexa, y HexaToBuffer, Longitud y Funciones Hash.
¿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:
01

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 buffer. El código ahora es:
S is Buffer
S[[1]] = 1
S[[2]] = 0
Tipo Buffer: Sintaxis y uso

Declarar una variable de tipo Buffer

  • <Nombre de variable> is Buffer
O
  • <Nombre de variable 1>, <Nombre de variable 2> are Buffers
Detalles de la sintaxis
<Nombre de variable>:Nombre de la variable a declarar.

Observación: De forma predeterminada, una variable de tipo Buffer está vacía.
Ejemplo:
MyBuffer is Buffer

Declarar e inicializar una variable de tipo Buffer

Para declarar e inicializar una variable de tipo Buffer, utilice la siguiente sintaxis:
<Variable name> is Buffer = [<Hexa value 1>, <Hexa value 2>, ..., <Hexa value N>]
Detalles de la sintaxis
<Nombre de variable>:Nombre de la variable a declarar.
Valor hexaValor hexadecimal.

Ejemplo:
b is Buffer = [0x01, 0x02, 0x03]

Uso de variables de tipo Buffer

Las variables de tipo Buffer pueden utilizarse de la misma manera que las variables de tipo String.
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"
    // In ANSI, MyBuffer contains: WINDEV is great
    // In UNICODE, MyBuffer contains:
    // W0i0n0D0e0v0 0i0s0 0gr0e0a0t0
  • asignar un byte a una variable Buffer:
    <Nombre del buffer Variable> [[<Índice de bytes>]] = <Código ASCII de bytes>.
    Por ejemplo:
    MyBuffer is Buffer
    MyBuffer[[1]] = 65 // MyBuffer contains "A"
Uso de funciones:
  • Las funciones Izquierda, Derecho y Middle se pueden utilizar en variables de tipo Buffer. Para más detalles, consulte la ayuda sobre estas funciones.
    WEBDEV - Código Navegador No disponible.
  • La función Longitud permite conocer el tamaño real de los datos de la variable de tipo Buffer (en bytes).
Uso de 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]])
WEBDEV - Código Navegador No disponible.
Buffer comparison:
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 ...
WEBDEV - Código Navegador No disponible.
Tipo 'Buffer on': Sintaxis y uso avanzado

Declarar una variable de tipo Buffer On

<Variable name> is Buffer on <Buffer size>
O
<Variable name 1>, <Variable name 2> are Buffers on <Size of buffers>
Detalles de la sintaxis
<Nombre de variable>:Nombre de la variable a declarar.
<Tamaño del buffer>:Tamaño del buffer en bytes.

Observaciones:
  • Las palabras clave a y an son opcionales: proporcionan una mejor legibilidad.
  • Por defecto, el carácter '0' se asigna a un 'Buffer on' Variable.
  • WEBDEV - Código Navegador El tipo "Buffer on" no está disponible.
Ejemplos:
MyBuffer is Buffer on 4
MyBuffer = "ABCDE" // MyBuffer contains "ABCD"
MyBuffer = "ZZ"    // MyBuffer contains "ZZCD"

Uso de variables de tipo 'Buffer on' (llamadas Buffers fijos)

Los buffers fijos se utilizan de la misma forma que los buffers simples. Sin embargo, deben tenerse en cuenta 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 buffer en una variable de tipo Integer.
Recordatorio: el tipo Buffer gestiona automáticamente su tamaño. Cuando se utiliza un buffer fijo, se recomienda copiar rápidamente su valor en un buffer automático.
// Use an API that returns the size of a buffer
bFixedBuffer is Buffer on 200
nSize is int
// Call the API
nSize = API(<API name>, <Parameters>, bFixedBuffer, 200)
// Copy the buffer
bBuffer is Buffer
bBuffer = Left(bFixedBuffer, nSize)
Ver también
Versión mínima requerida
  • Versión 11
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