Get, instruction

Lit les données d’un fichier disque ouvert et les place dans une variable.

Syntaxe

Get [ # ] filenumber, [ recnumber ], varname

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

Élément Description
filenumber Obligatoire. Tout numéro de fichier valide.
recnumber Facultatif. Donnée de type Variant (Long). Numéro de l’enregistrement (fichiers ouverts en mode Random) ou de l’octet (fichiers ouverts en mode Binary) par lequel la lecture débute.
varname Obligatoire. Nom de variable valide dans lequel les données sont lues.

Remarques

Les données lues avec Get sont généralement écrites dans un fichier avec Put. 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 la dernière instructionGet ou Put (ou pointé par la dernière fonction Seek) est lu. Vous devez inclure des virgules délimitant, par exemple :

Get #4,,FileBuffer 

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

  • Si la longueur des données lues est inférieure à la longueur spécifiée dans la clause Len de l’instruction Open , Get lit 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 lues.

  • Si la variable lue est une chaîne de longueur variable, l’instruction Get lit d’abord un descripteur de deux octets contenant la longueur de la chaîne, puis les données qui sont placées dans la variable. Par conséquent, la longueur d’enregistrement indiquée par la clause Len dans l’instruction Open doit être supérieure d’au moins deux octets à la longueur réelle de la chaîne.

  • Si la variable lue est une donnée Variant de type numérique, l’instruction Get lit les deux octets qui identifient le VarType de la valeur de type Variant, puis les données qui sont insérées dans la variable. Par exemple, lors de la lecture d’une donnée de type Variant de VarType 3, l’instruction Get lit 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 requis pour stocker la variable.

    Remarque

    Utilisez l’instruction Get pour lire un tableauVariant à partir d’un disque, mais vous ne pouvez pas utiliser Get pour lire un variant scalaire contenant un tableau. Vous ne pouvez pas non plus utiliser Get pour lire des objets à partir du disque.

  • Si la variable lue est de type Variant de VarType 8 (String), l’instruction Get lit 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 indiquée par la clause Len de l’instruction Open doit être supérieure d’au moins quatre octets à la longueur réelle de la chaîne.

  • Si la variable lue est un tableau dynamique, l’instruction Get lit un descripteur dont la longueur est égale à 2 plus 8 fois le nombre de dimensions, soit 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 à la lecture des données et du descripteur du tableau. Par exemple, la déclaration de tableau suivante nécessite 118 octets lors de 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 lue est un tableau de taille fixe, l’instruction Get ne lit que les données. Elle ne lit aucun descripteur.

  • Si la variable lue est un autre type de variable (pas une chaîne de longueur variable ou une valeur de type Variant), l’instruction Get ne lit 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 lues.

  • L’instruction Get lit des éléments de types définis par l’utilisateur comme si chacun d’eux était lu de façon individuelle, à ceci près qu’il n’y a pas de remplissage entre les éléments. Sur un 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, soit 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 à la lecture des éléments individuels, incluant 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 Get lit toutes les variables du disque consécutivement, c’est-à-dire sans remplissage entre les enregistrements.

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

  • L’instruction Get lit 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 deux octets. Le nombre d’octets lus est égal au nombre de caractères de la chaîne. Par exemple, les instructions suivantes lisent 10 octets dans le fichier avec le numéro de fichier 1 :

      VarString = String(10," ") 
      Get #1,,VarString 
    
    

Exemple

Cet exemple utilise l’instruction Get afin de lire les données d’un fichier et de les écrire dans une variable. Cet exemple suppose que TESTFILE est un fichier contenant cinq enregistrements du type défini par l’utilisateur est un fichier contenant cinq enregistrements du type Recorddéfini par l’utilisateur.

Type Record ' Define user-defined type. 
 ID As Integer 
 Name As String * 20 
End Type 
 
Dim MyRecord As Record, Position ' Declare variables. 
' Open sample file for random access. 
Open "TESTFILE" For Random As #1 Len = Len(MyRecord) 
' Read the sample file using the Get statement. 
Position = 3 ' Define record number. 
Get #1, Position, MyRecord ' Read third record. 
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.