WRITE
WRITE [ # flux , ] Expression AS TypeDonnée
WRITE [ # flux , ] Chaîne [ , Longueur ]
WRITE [ # flux , ] Pointeur [ , Longueur ]
Écriture d’un type de données spécifique.
La première syntaxe écrit une expression dans le flux 
flux en utilisant sa représentation binaire.
Si le flux n’est pas spécifié, c’est la sortie standard qui est utilisée.
À l’écriture d’une chaîne, la longueur de la chaîne est envoyée avant son contenu.
Voir 
Représentation binaire des données pour plus d’information.
Si la propriété 
Stream.NullTerminatedString est définie, alors la longueur de la chaîne n'est pas écrite, mais un octet nul est écrit après la fin de la chaîne.
Le type de donnée de 
Expression peut être l’un des suivants : 
NULL, 
Boolean, 
Byte, 
Short, 
Integer, 
Long, 
Pointer, 
Single,
Float, 
Date, 
String, 
Variant, tout 
tableau , toute 
Collection ou structure.
Si 
Expression est une collection, un tableau ou une structure, son contenu est alors écrit récursivement.
Lors de l’écriture d’une structure, le type de structure doit être spécifié comme 
TypeDonnée.
Si un type de donnée non géré est écrit, ou si une référence circulaire est détectée, une erreur est levée.
cette instruction suit l’ordre des octets du flux pour écrire les données.
Écriture du contenu d’une chaîne.
La seconde syntaxe écrit 
Longueur octets de la chaîne 
Chaîne vers le flux spécifié.
Si le flux n’est pas spécifié, c’est la sortie standard qui est utilisée.
Si 
Longueur n’est pas spécifié, la longueur de 
Chaîne est utilisée.
Écriture du contenu de mémoire
La troisième syntaxe écrit 
Longueur octets du 
Pointeur de l'adresse mémoire vers le flux spécifié.
Si le flux n’est pas spécifié, c’est la sortie standard qui est utilisée.
Longueur doit être spécifié, sinon rien n'est effectué.
Écriture d'un objet 
Tout objet peut être sérialisé, à condition que sa classe implémente la méthode spéciale 
_write.
Vous écrivez l'objet en utilisant une des syntaxex suivantes :
WRITE #Stream, Object As <ObjectClass>
WRITE #Stream, Object As Object
WRITE #Stream, Object As Variant
Si vous lisez l'objet ultérieurement en utilisant 
'As Variant' ou 
'As Object', vous devez l'écrire en utilisant 
'As Variant' ou 
'As Object'.
Car dans ce cas, le nom de classe de l'objet nécessaire est écrit dans le flux. Sinon, l'instruction 
READ ne dispose pas du nom de classe nécessaire à l'instanciation de l'objet.
Écriture d'un même objet plusieurs fois 
Avant la version 3.17, les objets écrits plusieurs fois sont dupliqués.
Depuis la version 3.17, ils ne sont plus dupliqués. Une fois qu'un objet a été sérialisé, il est écrit sous forme d'une référence à cinq octets à chaque fois qu'il est réécrit.
De même, lors de la lecture, l'objet est créé une fois, et partagé entre toutes les autres références.
Compatibilité avec Gambas 2
ATTENTION!
WRITE #Flux, Expression écrit la forme binaire de 
Expression en Gambas 2.0.
En Gambas 3.0 
Expression est écrite comme une chaîne.
Vous 
DEVEZ donc vérifier toutes vos instructions 
WRITE quand vous convertissez un projet Gambas de la version 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 elle 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 quand la deuxième syntaxe est utilisée.
 
L'utilisation d'un 
pointeur comme flux n'est plus possible. A la place, créez un flux mémoire avec l'instruction 
MEMORY .
Voir aussi