FilePutObject, fonction

Mise à jour : novembre 2007

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

La fonctionnalité My permet une meilleure productivité et de meilleures performances dans les opérations d'E/S sur fichier que FilePutObject. Pour plus d'informations, consultez My.Computer.FileSystem, objet.

Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Object, _
      RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Short, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Integer, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Single, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Double, _
      RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Decimal, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Byte, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Boolean, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Date, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As System.Array, _
   Optional RecordNumber As Integer = -1, _
   Optional ArrayIsDynamic As Boolean = False _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As String, _
   Optional RecordNumber As Integer = -1, _
   Optional StringIsFixedLength As Boolean = False _
)

Paramètres

  • FileNumber
    Requis. Tout numéro de fichier valide.

  • Value
    Requis. Nom de variable valide contenant les données écrites sur le disque.

  • RecordNumber
    Facultatif. Numéro de l'enregistrement (fichiers ouverts en mode Random) ou de l'octet (fichiers ouverts en mode Binary) par lequel l'écriture débute.

  • ArrayIsDynamic
    Facultatif. S'applique uniquement à l'écriture d'un tableau. Spécifie si le tableau doit être considéré comme dynamique et s'il est nécessaire d'écrire un descripteur de tableau pour la chaîne décrivant la longueur.

  • StringIsFixedLength
    Facultatif. S'applique uniquement lors de l'écriture d'une chaîne. Spécifie s'il est nécessaire d'écrire un descripteur pour la chaîne indiquant la longueur. La valeur par défaut est False.

Notes

La fonction FilePutObject est utilisée à la place de FilePut afin d'éviter toute ambiguïté au moment de la compilation si le type Object est passé au lieu d'un autre type, tel que Integer, Long, Short, etc.

FilePutObject écrit et lit des descripteurs décrivant l'objet. Si vous avez l'intention d'écrire le type Variant, FilePutObject est requis. En cas de doute, sachez que si vous utilisez un objet pour le deuxième paramètre, il est toujours plus sûr d'utiliser FilePutObject et FileGetObject.

FilePutObject est seulement valide en mode Random et Binary.

Les données écrites avec FilePutObject sont généralement lues à partir d'un fichier avec la fonction FileGetObject.

Le premier enregistrement ou octet d'un fichier occupe la position 1, le deuxième enregistrement ou octet la position 2, et ainsi de suite. Si l'argument RecordNumber est omis, FilePutObject écrit l'enregistrement ou l'octet à la suite de la dernière fonction FileGetObject ou FilePutObject (ou l'enregistrement ou l'octet désigné par la dernière fonction Seek).

L'argument StringIsFixedLength contrôle si la fonction interprète des chaînes comme variable ou à longueur fixe. FilePutObject n'écrit pas le descripteur de longueur lorsque l'argument est True. Si vous employez StringIsFixedLength = True avec FilePutObject, vous devez en faire de même avec FileGetObject et vous devez en outre vous assurer que la chaîne est initialisée à la longueur attendue.

Mode Random

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

  • Si la longueur des données écrites est inférieure à la longueur spécifiée dans la clause RecordLength de la fonction FileOpen, la fonction FilePutObject poursuit l'écriture des enregistrements suivants conformément aux limites de longueur des enregistrements. L'espace compris entre la fin d'un enregistrement et le début de l'enregistrement suivant est rempli par le contenu de la mémoire tampon du fichier. Comme il est impossible de déterminer avec précision 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 exception est levée si la longueur des données écrites est supérieure à celle spécifiée dans la clause RecordLength de la fonction FileOpen.

  • Si la variable écrite est un objet contenant un type numérique, FilePutObject écrit d'abord deux octets qui identifient le VarType de l'objet puis la variable. Par exemple, lorsque vous écrivez un objet contenant un entier, FilePutObject écrit six octets : deux octets identifiant l'objet comme VarType(3) (Integer) et quatre octets contenant les données. La longueur d'enregistrement spécifiée par le paramètre RecordLength dans la fonction FileOpen doit être supérieure d'au moins deux octets au nombre réel d'octets requis pour stocker la variable.

  • Si la variable écrite est un objet contenant une chaîne, FilePutObject écrit un descripteur à deux octets identifiant le VarType(8) de l'objet, un descripteur à deux octets indiquant la longueur de la chaîne, puis la chaîne de données. La longueur d'enregistrement spécifiée par le paramètre RecordLength dans la fonction FileOpen doit être supérieure d'au moins quatre octets à la longueur réelle de la chaîne. Si vous souhaitez placer une chaîne sans descripteur, vous devez passer la valeur True au paramètre StringIsFixedLength de sorte que la chaîne lue soit de la longueur voulue.

  • Si la variable écrite est un tableau, vous pouvez au besoin écrire un descripteur de la taille et des dimensions du tableau. Visual Basic 6 et les versions antérieures auraient écrit le descripteur de fichier dans le cas d'un tableau dynamique, mais pas pour un tableau de taille fixe. Par défaut, Visual Basic n'écrit pas ce descripteur. Pour écrire le descripteur, affectez la valeur True au paramètre ArrayIsDynamic. Le mode d'écriture du tableau doit absolument concorder avec son mode de lecture : si le tableau est lu avec le descripteur, vous devez écrire le descripteur. Le descripteur spécifie le rang du tableau, la taille et les limites inférieures de chaque rang. Sa longueur est égale à 2 plus 8 fois le nombre de dimensions : (2 + 8 * NumberOfDimensions). La longueur d'enregistrement spécifiée par la clause RecordLength dans la fonction FileOpen doit être supérieure ou égale à la somme de tous les octets nécessaires à l'écriture des données et du descripteur du tableau.

Mode Binary

Pour les fichiers ouverts en mode Binary, toutes les règles du mode Random s'appliquent, à l'exception de ce qui suit :

  • La clause RecordLength de la fonction FileOpen n'a aucun effet. La fonction FilePutObject écrit toutes les variables sur le disque de manière contiguë, c'est-à-dire sans remplissage entre les enregistrements.

Exemple

Cet exemple utilise la fonction FilePutObject pour écrire une chaîne dans un fichier.

Sub WriteData()
    Dim text As String = "test"
    FileOpen(1, "test.bin", OpenMode.Binary)
    FilePutObject(1, text)
    FileClose(1)
End Sub

Notes du développeur sur Smart Device

Cette fonction n'est pas prise en charge.

Configuration requise

Espace de noms :Microsoft.VisualBasic

**Module :**FileSystem

**Assembly :**bibliothèque Visual Basic Runtime (dans Microsoft.VisualBasic.dll)

Voir aussi

Référence

FileGet, fonction

FileOpen, fonction

Seek, fonction

FilePut, fonction

My.Computer.FileSystem, objet

Autres ressources

Écriture dans des fichiers en Visual Basic