Page de démarrage > lang > write 
 en de es it nl pl pt pt_BR mk sq ca hu cs tr ar fa id vi ko ja ru zh zh_TW eo
Précédent  Suivant  Éditer  Renommer  Annuler  Rafraîchir  Rechercher  Administration  
Documentation
Historique
 
WRITE
ATTENTION! La syntaxe a changé en Gambas 3.

WRITE [ # Flux , ] Expression [ , Longueur ]
WRITE [ # Pointeur , ] Expression [ , Longueur ]

Ecrit une expression vers le flux Flux en employant sa représentation binaire.

Si le flux n'est pas indiqué, la sortie standard est employée.

Si Expression est une chaîne, vous pouvez spécifier une Longueur qui indique le nombre d'octets à écrire. Si aucune longueur n'est spécifiée pour une chaîne, la longueur est directement écrite vers le flux juste avant les données de la chaîne.

Cette instruction utilise l'ordre des octets du flux pour écrire les données.

Si vous indiquez un pointeur au lieu d'un Stream, alors les données seront écrites directement à l'adresse mémoire spécifiée par le pointeur.

Si vous écrivez a une adresse mémoire interdite, vous obtiendrez une erreur. L'interpréteur ne plantera pas.

Faites attention au type de donnée de l’argument Expression

Le type de donnée de Expression est utilisé pour connaître exactement ce qui doit être écrit dans le flux. Méfiez vous, ce n’est pas nécessairement ce que vous pensez.

Par exemple, si vous avez une référence anonyme sur un objet (c.a.d. si vous utilisez le type de donnée Object ), alors le type de donnée de chacune de ses propriétés sera un Variant, et non le type réel. Donc WRITE écrira un variant, ce n’est pas ce que vous attendiez.

Si vous utilisez une référence d’objet dont le type de donnée est déclaré à la compilation, vous n’aurez pas ce problème.

Si vous n’êtes pas certain, la manière la plus sure est d’utiliser une variable intermédiaire locale d’un type bien connu, ou une conversion explicite.

DIM hStream AS Stream ' Le flux
DIM hObject AS Object   ' Un objet avec une propriété float appelée "Value"
DIM fValue AS Float       ' Nous voulons écrire une propriété float

' La mauvaise manière
WRITE #hStream, hObject.Value

' La bonne
fValue = hObject.Value
WRITE #hStream, fValue

' Une autre bonne façon
WRITE #hStream, CFloat(hObject.Value)

Exemple

...                                     ' Les octets suivants seront écrits dans le flux  (notation hexadécimale) :
WRITE #hfile, "123456789" ' 09 31 32 33 34 35 36 37 38 39
WRITE #hfile, "123456789", 0 ' 09 31 32 33 34 35 36 37 38 39
WRITE #hfile, "123456789", 4 ' 31 32 33 34
WRITE #hfile, "123456789", 11 ' 31 32 33 34 35 36 37 38 39 00 00
WRITE #hfile, "123456789", -2 ' Rien ne sera écrit dans le flux.
...

Cet exemple montre comment écrire un fichier binaire. Il lit ensuite le fichier créé pour afficher son contenu.

PUBLIC SUB ButtonWriteBinary_Click()
  DIM filePath AS String
  ' Crée un fichier temporaire
  filePath = Temp()
  ' Écris le fichier binaire
  BinaryWrite(filePath)
  ' Affiche le fichier binaire
  BinaryRead(filePath)
  ' Efface le fichier temporaire
  KILL filePath
CATCH
  Message.Error(Error.Text)
END

PRIVATE SUB BinaryWrite(FilePath AS String)
  DIM binaryFile AS File
  DIM i AS Integer = 10
  DIM b AS Byte = 4
  DIM s AS Short = 23
  DIM s1 AS String = "Ceci est la chaîne 1"
  DIM s2 AS String = "Une autre chaîne"
  ' Ouvre en créant le fichier, ainsi nous en obtenons un nouveau
  binaryFile = OPEN FilePath FOR CREATE
  WRITE #binaryFile, i
  WRITE #binaryFile, b
  WRITE #binaryFile, s
  WRITE #binaryFile, s1
  WRITE #binaryFile, s2
  CLOSE #binaryFile
END

PRIVATE SUB BinaryRead(FilePath AS String)
  DIM binaryFile AS File
  DIM i AS Integer
  DIM b AS Byte
  DIM s AS Short
  DIM s1 AS String
  DIM s2 AS String
  ' Lis le fichier binaire
  binaryFile = OPEN FilePath FOR READ
  READ #binaryFile, i
  READ #binaryFile, b
  READ #binaryFile, s
  READ #binaryFile, s1
  READ #binaryFile, s2
  CLOSE #binaryFile
  ' Affiche le résultat
  PRINT i
  PRINT b
  PRINT s
  PRINT s1
  PRINT s2
END

Voir aussi

Flux & fonctions d'Entrée/Sortie, Ordre des octets de flux, Représentation des données binaire, External Function Management