Partager via


FileSystem.FilePutObject(Int32, Object, Int64) Méthode

Définition

Écrit les données d'une variable dans un fichier sur disque. La fonctionnalité My améliore la productivité et les performances des opérations d’E/S de fichier par rapport à FilePutObject. Pour plus d'informations, consultez FileSystem.

public static void FilePutObject (int FileNumber, object Value, long RecordNumber = -1);
static member FilePutObject : int * obj * int64 -> unit
Public Sub FilePutObject (FileNumber As Integer, Value As Object, Optional RecordNumber As Long = -1)

Paramètres

FileNumber
Int32

Obligatoire. N’importe quel numéro de fichier valide.

Value
Object

Obligatoire. Nom de variable valide contenant les données écrites sur le disque.

RecordNumber
Int64

Optionnel. 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.

Exemples

Cet exemple utilise la FilePutObject fonction 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

Remarques

La FilePutObject fonction est utilisée au lieu de pour éviter les ambiguïtés au moment de FilePut la compilation si le type Object est passé à la place d’un autre type, tel que Integer, Long, Shortet ainsi de suite.

FilePutObject écrit et lit des descripteurs qui décrivent l’objet. Si vous avez l’intention d’écrire le Variant type, FilePutObject est obligatoire. En cas de doute, si vous utilisez un objet pour le deuxième paramètre, nous vous recommandons d’utiliser FilePutObject toujours et FileGetObject.

FilePutObject est valide uniquement en Random mode et Binary .

Les données écrites avec FilePutObject sont généralement lues à partir d’un fichier à l’aide de FileGetObject.

Le premier enregistrement ou octet d’un fichier se trouve à la position 1, le deuxième enregistrement ou octet se trouve à la position 2, et ainsi de suite. Si vous omettez RecordNumber, FilePutObject écrit l’enregistrement ou l’octet suivant après la dernière FileGetObject fonction ou FilePutObject (ou l’enregistrement ou l’octet pointé vers la dernière Seek fonction).

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

Mode aléatoire

Pour les fichiers ouverts en Random mode, les règles suivantes s’appliquent :

  • Si la longueur des données en cours d’écriture est inférieure à la longueur spécifiée dans la RecordLength clause de la FileOpen fonction, FilePutObject écrit les enregistrements suivants sur les limites de longueur d’enregistrement. L’espace entre la fin d’un enregistrement et le début de l’enregistrement suivant est complété avec le contenu existant de la mémoire tampon de fichier. Étant donné que la quantité de données de remplissage ne peut pas être déterminée avec précision, il est généralement judicieux de faire en sorte que la longueur de l’enregistrement corresponde à la longueur des données en cours d’écriture. Si la longueur des données en cours d’écriture est supérieure à la longueur spécifiée dans la RecordLength clause de la FileOpen fonction, une exception est levée.

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

  • Si la variable en cours d’écriture est un objet qui contient une chaîne, FilePutObject écrit un descripteur de deux octets identifiant le VarType(8) de l’objet, un descripteur de deux octets indiquant la longueur de la chaîne, puis écrit les données de chaîne. La longueur d’enregistrement spécifiée par le RecordLength paramètre dans la FileOpen fonction 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 le descripteur, vous devez passer True au StringIsFixedLength paramètre, et la chaîne que vous lisez doit avoir la longueur correcte.

  • Si la variable en cours d’écriture est un tableau, la longueur d’enregistrement spécifiée par la RecordLength clause de la FileOpen fonction doit être supérieure ou égale à la somme de tous les octets nécessaires pour écrire les données du tableau et le descripteur de tableau. Le descripteur spécifie le rang du tableau, la taille et les limites inférieures pour chaque classement. Sa longueur est égale à 2 plus 8 fois le nombre de dimensions : (2 + 8 * NumberOfDimensions).

Mode binaire

Pour les fichiers ouverts en Binary mode, toutes les règles de Random mode s’appliquent, sauf :

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

S’applique à

Voir aussi