Partager via


Put, instruction

Écrit les données d’une variable dans un fichier disque.

Syntaxe

Put [ # ] filenumber, [ recnumber ], varname

La syntaxe de l’instruction Put comprend les éléments suivants :

Élément Description
filenumber Obligatoire. Tout numéro de fichier valide.
recnumber Optional. Donnée de type Variant (Long). Numéro de l’enregistrement (fichiers ouverts en mode Random) ou de l’octet (fichiers en mode Binary) qui marque le début de l’écriture.
varname Obligatoire. Nom de la variable contenant les données à écrire sur le disque.

Remarques

Les données écrites avec Put sont généralement lues à partir d’un fichier avec Get.

Dans un fichier, le premier enregistrement ou octet se trouve à la position 1, le deuxième enregistrement ou octet se trouve à la position 2, etc. Si vous ne spécifiez qu'un enregistrement, seul ce dernier est verrouillé ou déverrouillé. Si vous omettez recnumber, l’enregistrement ou l’octet suivant après la dernière instruction Get ou Put , ou pointé par la dernière fonction Seek , est écrit. Vous devez inclure des virgules délimitant, par exemple :

Put #4,,FileBuffer 

Les règles suivantes s’appliquent aux fichiers ouverts en mode Random :

  • Si la longueur des données en cours d’écriture est inférieure à la longueur spécifiée dans la clause Len de l’instruction Open , Put écrit les enregistrements suivants sur les limites de longueur d’enregistrement. L’espace compris entre la fin d’un enregistrement et le début de l’enregistrement suivant est rempli par le contenu de la zone tampon du fichier. Comme il est impossible de déterminer avec certitude le volume des données de remplissage, il est généralement préférable que la longueur des enregistrements corresponde à la longueur des données écrites. Une erreur se produit si la longueur des données écrites est supérieure à celle indiquée dans la clause Len de l’instruction Open.

  • Si la variable écrite est une chaîne de longueur variable, l’instruction Put écrit un descripteur de 2 octets contenant la longueur de la chaîne, puis la variable. La longueur d’enregistrement indiquée par la clause Len dans l’instruction Open doit être supérieure d’au moins 2 octets à la longueur réelle de la chaîne.

  • Si la variable écrite est une valeur Variant de type numérique, l’instruction Put écrit les 2 octets qui identifient le VarType de la valeur de type Variant, puis la variable. Par exemple, lorsqu’elle écrit une valeur de type Variant de VarType 3, l’instruction Put écrit 6 octets : 2 octets qui identifient la valeur de type Variant comme étant de VarType 3 (Long) et 4 octets contenant les données de type Long. La longueur d’enregistrement indiquée par la clause Len dans l’instruction Open doit être supérieure d’au moins 2 octets au nombre réel d’octets nécessaires pour stocker la variable.

    Remarque

    Utilisez l’instruction Put pour écrire un tableauVariant sur disque, mais vous ne pouvez pas utiliser Put pour écrire un variant scalaire contenant un tableau sur disque. Vous ne pouvez pas non plus utiliser Put pour écrire des objets sur le disque.

  • Si la variable écrite est de type Variant de VarType 8 (String), l’instruction Put écrit 2 octets qui identifient le type VarType, 2 octets qui indiquent la longueur de la chaîne, puis les données de la chaîne. La longueur d’enregistrement spécifiée par la clause Len dans l’instruction Open doit être supérieure d’au moins 4 octets à la longueur réelle de la chaîne.

  • Si la variable écrite est un tableau dynamique, l’instruction Put écrit un descripteur dont la longueur est égale à 2 plus 8 fois le nombre de dimensions, c’est-à-dire, 2 + 8 * NumberOfDimensions. La longueur d’enregistrement spécifiée par la clause Len dans l’instruction Open doit être supérieure ou égale à la somme de tous les octets nécessaires à l’écriture des données et du descripteur du tableau. Par exemple, la déclaration de tableau suivante nécessite 118 octets pour l’écriture du tableau sur le disque.

    Dim MyArray(1 To 5,1 To 10) As Integer 
    
    
  • Les 118 octets sont distribués comme suit : 18 octets pour le descripteur (2 + 8 * 2) et 100 octets pour les données (5 * 10 * 2).

  • Si la variable écrite est un tableau de taille fixe, l’instruction Put n’écrit que les données. Elle n’écrit aucun descripteur sur le disque.

  • Si la variable écrite est d’un type différent (pas une chaîne de longueur variable ou une valeur de type Variant), l’instruction Put n’écrit que les données de la variable. La longueur d’enregistrement indiquée par la clause Len dans l’instruction Open doit être supérieure ou égale à la longueur des données écrites.

  • Put écrit des éléments de types définis par l’utilisateur comme si chacun avait été écrit individuellement, sauf qu’il n’y a pas de remplissage entre les éléments. Sur disque, un tableau dynamique de type défini par l’utilisateur écrit avec l’instruction Put est préfixé par un descripteur dont la longueur est égale à 2 plus 8 fois le nombre de dimensions, c’est-à-dire, 2 + 8 * NumberOfDimensions. La longueur d’enregistrement indiquée par la clause Len dans l’instruction Open doit être supérieure ou égale à la somme de tous les octets nécessaires à l’écriture des éléments individuels, y compris les tableaux et leurs descripteurs.

Pour les fichiers ouverts en mode Binary, toutes les règles du mode Random s’appliquent, aux exceptions suivantes :

  • La clause Len dans l’instruction Open n’a aucun effet. L’instruction Put écrit toutes les variables sur le disque de manière contiguë, c’est-à-dire sans remplissage entre les enregistrements.

  • Pour tout tableau autre que ceux de type défini par l’utilisateur, l’instruction Put n’écrit que les données. Elle n’écrit aucun descripteur.

  • L’instruction Put écrit les chaînes de longueur variable qui ne sont pas des éléments de type défini par l’utilisateur, sans rechercher le descripteur de 2 octets. Le nombre d’octets écrits est égal au nombre de caractères de la chaîne. Par exemple, les instructions suivantes écrivent 10 octets dans le fichier numéro 1 :

      VarString$ = String$(10," ") 
      Put #1,,VarString$ 
    
    

Exemple

Cet exemple utilise l’instruction Put pour écrire des données dans un fichier. Cinq enregistrements du type défini par l’utilisateur sont écrits dans le fichier.

Type Record ' Define user-defined type. 
 ID As Integer 
 Name As String * 20 
End Type 
 
Dim MyRecord As Record, RecordNumber ' Declare variables. 
' Open file for random access. 
Open "TESTFILE" For Random As #1 Len = Len(MyRecord) 
For RecordNumber = 1 To 5 ' Loop 5 times. 
 MyRecord.ID = RecordNumber ' Define ID. 
 MyRecord.Name = "My Name" & RecordNumber ' Create a string. 
 Put #1, RecordNumber, MyRecord ' Write record to file. 
Next RecordNumber 
Close #1 ' Close file. 

Voir aussi

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.