READ
Variable = READ [ # Flux ] AS TypeDonnée
Variable = READ [ # _ Flux _ , ] Longueur
Lecture d’un type de donnée spécifique
La première syntaxe lit le flux
Flux en données binaires dont le type est spécifié par l’argument
TypeDonnée. La représentation binaire est celle utilisée par l’instruction
WRITE.
Si le flux n’est pas précisé, l’entrée standard est utilisée.
Le type de donnée retourné est l’un des suivants :
NULL,
Boolean,
Byte,
Short,
Integer,
Long,
Pointer,
Single,
Float,
Date,
String,
Variant, tout
tableau,
Collection ou structure.
Lors de la lecture d’une chaîne, la longueur de la chaîne doit précéder son contenu dans le flux de données.
Voir
Représentation binaire des données pour plus d'informations.
Depuis 3.15
si la propriété
Stream.NullTerminatedString est définie, la longueur de la chaîne n'est pas lue et la chaîne est lue jusqu'à ce qu'un octet nul soit rencontré.
Si le contenu du flux ne peut être interprété, une erreur est générée.
Cette instruction utilise l’ordre des octets de flux pour lire les données.
Lecture d'un objet
Depuis 3.15
Tout objet peut être désérialisé, à condition que sa classe implémente la méthode spéciale
_read.
Si l'objet a été préalablement sérialisé dans le flux de la bonne manière, il est reconstruit en appelant son constructeur sans argument, puis la méthode
_read est appelée.
Vous lisez l'objet en utilisant l'une des syntaxes suivantes :
Objet = READ # Flux As ClasseObjet
Objet = READ # Flux As Objet
Objet = READ # Flux As Variant
Si vous lisez l'objet en utilisant
'As Variant'
ou
'As Object'
, vous devez l'avoir écrit en utilisant
'As Variant'
ou
'As Object'
.
Car dans ce cas, le nom de la classe d'objet nécessaire est écrit dans le flux. Sinon, l'instruction
READ n'a pas le nom de classe nécessaire à l'instanciation de l'objet.
Lecture du contenu d’une chaîne
La deuxième syntaxe lit à partir d’un flux
Flux un nombre d’octets spécifié par l’argument
Longueur, et les retourne sous forme de chaîne.
Si le flux n’est pas précisé, l’entrée standard est utilisée.
Compatibilité avec Gambas 2
WRITE #Flux, Expression
écrit la forme binaire de l’
Expression en Gambas 2.0.
En Gambas 3.0 il écrit
Expression sous forme de chaîne.
Vous
DEVEZ donc vérifier toutes vos instructions
WRITE quand vous convertissez un projet Gambas 2.0 vers 3.0, et spécifier
AS TypeDonnée
quand c’est nécessaire.
Par défaut, le compilateur gère l’ancienne syntaxe READ et l’ancienne syntaxe WRITE quand c’est compatible.
Si vous voulez déterminer à quels endroits il vous faut réécrire votre syntaxe READ / WRITE , vous pouvez compiler votre projet à la main avec l'option "--no-old-read-write-syntax". Alors, l’argument
Longueur de WRITE devient obligatoire si la seconde syntaxe est employée.
L'utilisation d'un
pointeur comme flux n'est plus possible. Créez, à la place, un flux mémoire avec l'instruction
MEMORY .
Voir aussi