PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

  • Présentation
  • Pourquoi utiliser le type Buffer ?
  • Le type Buffer : Syntaxe et manipulations
  • Déclarer une variable de type Buffer
  • Déclarer et initialiser une variable de type Buffer
  • Manipulations sur les buffers
  • Le type Buffer sur : Syntaxe et manipulations avancées
  • Déclarer une variable de type Buffer sur
  • Manipulations des buffers fixes
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Le type "Buffer" (Type de variable)
Présentation
Le type Buffer correspond à une zone mémoire binaire.
Grâce à ce type, un code manipulant du binaire sera portable entre une application WINDEV standard et une application WINDEV Mobile.
Sous WINDEV standard, une variable de type chaîne de caractères peut aussi bien contenir des caractères que des données binaires (une image par exemple).
Sous WINDEV Mobile, si une variable de type chaîne de caractères contient des données binaires, ces données peuvent être érronées (conversion malencontreuse par exemple). Pour manipuler des données binaires, nous vous conseillons d'utiliser une variable de type buffer.
Le type buffer ne gère pas de marqueur spécifique de fin et permet de stocker des 0 binaires.
Deux types de variables sont disponibles :
  • Buffer : Ce type permet de manipuler une zone mémoire dont la taille est dynamique : elle s'adapte automatiquement au contenu du buffer.
  • Buffer sur : Ce type permet de manipuler une zone mémoire dont la taille (en octets) est fixée à la compilation. Ce type est un type avancé permettant de réaliser certaines manipulations spécifiques en mémoire, d'utiliser certaines API Windows.
Versions 16 et supérieures
Universal Windows 10 App Ce type de variable est désormais disponible pour les applications Windows Phone.
Nouveauté 16
Universal Windows 10 App Ce type de variable est désormais disponible pour les applications Windows Phone.
Universal Windows 10 App Ce type de variable est désormais disponible pour les applications Windows Phone.
Versions 17 et supérieures
iPhone/iPad Ce type de variable est désormais disponible pour les applications iPhone/iPad.
Nouveauté 17
iPhone/iPad Ce type de variable est désormais disponible pour les applications iPhone/iPad.
iPhone/iPad Ce type de variable est désormais disponible pour les applications iPhone/iPad.
Versions 18 et supérieures
Universal Windows 10 App Ce type de variable est désormais disponible en mode Windows Store apps.
Widget Android Ce type de variable est désormais disponible en mode Widget Android.
Android Ce type de variable est désormais disponible pour les applications Android.
Nouveauté 18
Universal Windows 10 App Ce type de variable est désormais disponible en mode Windows Store apps.
Widget Android Ce type de variable est désormais disponible en mode Widget Android.
Android Ce type de variable est désormais disponible pour les applications Android.
Universal Windows 10 App Ce type de variable est désormais disponible en mode Windows Store apps.
Widget Android Ce type de variable est désormais disponible en mode Widget Android.
Android Ce type de variable est désormais disponible pour les applications Android.
Versions 21 et supérieures
Universal Windows 10 App Ce type de variable est désormais disponible en mode Universal Windows 10 App.
Apple Watch Ce type de variable est désormais disponible en mode Apple Watch.
Nouveauté 21
Universal Windows 10 App Ce type de variable est désormais disponible en mode Universal Windows 10 App.
Apple Watch Ce type de variable est désormais disponible en mode Apple Watch.
Universal Windows 10 App Ce type de variable est désormais disponible en mode Universal Windows 10 App.
Apple Watch Ce type de variable est désormais disponible en mode Apple Watch.
Versions 22 et supérieures
WINDEV MobileAndroidWidget Android Ce type de variable est désormais optimisé pour la manipulation des octets.
Nouveauté 22
WINDEV MobileAndroidWidget Android Ce type de variable est désormais optimisé pour la manipulation des octets.
WINDEV MobileAndroidWidget Android Ce type de variable est désormais optimisé pour la manipulation des octets.
Pourquoi utiliser le type Buffer ?
Sous WINDEV, Il est possible d'utiliser le code suivant pour manipuler des octets en binaire :
S est une chaîne = Caract(1) + Caract(0)
La zone mémoire correspondante est :
01
Ce même code exécuté en Ansi (WINDEV standard) et en Unicode (WINDEV Mobile) n'a pas le même comportement.
Pour avoir un code identique en ANSI et en UNICODE, il est nécessaire de remplacer la chaîne par un buffer. Le code devient alors :
S est un Buffer
S[[1]] = 1
S[[2]] = 0
Le type Buffer : Syntaxe et manipulations

Déclarer une variable de type Buffer

  • <Nom de la variable> est un Buffer
OU
  • <Nom de la variable 1>, <Nom de la variable 2> sont des Buffers
Détail de la syntaxe
<Nom de la variable> :Nom de la variable à déclarer.
Remarques :
  • Les mots-clés un, une et des ne sont pas obligatoires : ce sont des mots d'agrément.
  • Par défaut, une variable de type buffer est vide.
Exemple :
MonBuffer est un Buffer
Versions 19 et supérieures

Déclarer et initialiser une variable de type Buffer

Pour déclarer et initialiser une variable de type Buffer, il est possible d'utiliser la syntaxe suivante :
<Nom de la variable> est un Buffer = [<Valeur hexa 1>, <valeur hexa 2>, ..., <Valeur hexa N>]
Détail de la syntaxe
<Nom de la variable> :Nom de la variable à déclarer.
Valeur hexaValeur hexadécimale
Exemple :
b est un Buffer = [0x01, 0x02, 0x03]
Nouveauté 19

Déclarer et initialiser une variable de type Buffer

Pour déclarer et initialiser une variable de type Buffer, il est possible d'utiliser la syntaxe suivante :
<Nom de la variable> est un Buffer = [<Valeur hexa 1>, <valeur hexa 2>, ..., <Valeur hexa N>]
Détail de la syntaxe
<Nom de la variable> :Nom de la variable à déclarer.
Valeur hexaValeur hexadécimale
Exemple :
b est un Buffer = [0x01, 0x02, 0x03]

Déclarer et initialiser une variable de type Buffer

Pour déclarer et initialiser une variable de type Buffer, il est possible d'utiliser la syntaxe suivante :
<Nom de la variable> est un Buffer = [<Valeur hexa 1>, <valeur hexa 2>, ..., <Valeur hexa N>]
Détail de la syntaxe
<Nom de la variable> :Nom de la variable à déclarer.
Valeur hexaValeur hexadécimale
Exemple :
b est un Buffer = [0x01, 0x02, 0x03]

Manipulations sur les buffers

Les buffers peuvent être manipulés de la même façon qu'une chaîne de caractères.
Pour affecter un buffer, utilisez une des syntaxes suivantes :
  • affectation d'une chaîne du buffer :
    <Nom de la variable Buffer> = <Ma Chaîne>.
    Par exemple :
    MonBuffer est un Buffer
    MonBuffer = "WINDEV est formidable"
    // En ANSI, le buffer contient : WINDEV est formidable
    // En UNICODE, le buffer contient :
    // W0i0n0D0e0v0 0e0s0t0 0f0o0r0m0i0d0a0b0l0e0
  • affectation d'un octet du buffer :
    <Nom de la variable buffer> [[<Indice de l'octet>]] = <Code ASCII de l'octet>.
    Par exemple :
    MonBuffer est un Buffer
    MonBuffer[[1]] = 65 // MonBuffer contient "A"
Utilisation des fonctions :
  • Les fonctions Gauche, Droite et Milieu sont utilisables sur les buffers. Pour plus de détails sur la syntaxe à utiliser, consultez l'aide de ces fonctions.
  • La fonction Taille permet de connaître la taille réelle des données contenues dans le buffer (en octets).
Utilisation des opérateurs :
L'opérateur [[ ]] permet d'accéder :
  • à un octet du buffer. Par exemple :
    MonBuffer est un Buffer
    MonBuffer = "WINDEV est formidable"
    MonBuffer[[1]] = "W"
  • à une partie du buffer. Par exemple :
    MonBuffer est un Buffer
    MonBuffer = "WINDEV est formidable"
    Info(MonBuffer[[8 A 15]])
AndroidWidget Android L'opérateur [[ ]] n'est pas disponible.
Versions 22 et supérieures
AndroidWidget Android L'opérateur [[ ]] est désormais disponible.
Nouveauté 22
AndroidWidget Android L'opérateur [[ ]] est désormais disponible.
AndroidWidget Android L'opérateur [[ ]] est désormais disponible.
Le type Buffer sur : Syntaxe et manipulations avancées

Déclarer une variable de type Buffer sur

<Nom de la variable> est un Buffer Sur <Taille du buffer>
OU
<Nom de la variable 1>, <Nom de la variable 2> sont des Buffers Sur <Taille des buffers>
Détail de la syntaxe
<Nom de la variable> :Nom de la variable à déclarer.
<Taille du buffer> : Taille en octets du buffer
Remarques :
  • Les mots-clés un, une et des ne sont pas obligatoires : ce sont des mots d'agrément.
  • Par défaut, une variable de type buffer sur est remplie avec le caractère 0.
Exemples :
MonBuffer est un Buffer sur 4
MonBuffer = "ABCDE" // MonBuffer contient "ABCD"
MonBuffer = "ZZ"    // MonBuffer contient "ZZCD"

Manipulations des buffers fixes

Les buffers fixes se manipulent de la même manière que les buffers simples. Cependant, quelques différences doivent être prises en compte.
En effet, en cours d'exécution, la taille réelle des données contenues dans le buffer n'est pas connue :
  • Lors d'une écriture plus longue que la taille du buffer, l'écriture est tronquée à la taille du buffer.
  • Lors d'une écriture plus petite que la taille du buffer, la partie non écrite du buffer conserve sa valeur précédente.
Pour manipuler ce type de buffer, il est conseillé de toujours stocker la taille réelle du buffer dans une variable de type Entier.
Rappel : le type Buffer gère automatiquement sa taille. Lors de l'utilisation d'un buffer fixe, il est recommandé de copier rapidement sa valeur dans un buffer automatique.
// Utilisation d'une API retournant la taille d'un buffer
bBufferFixe est un buffer sur 200
nTaille est un entier
// Appel de l'API
nTaille = API(<Nom API>, <Paramètres>, bBufferFixe,200)
// Copie du buffer
bBuffer est un buffer
bBuffer = Gauche(bBufferFixe, nTaille)
Version minimum requise
  • Version 11
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire