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

Définition

Écrit des données d’une variable dans un fichier de disque. La My fonctionnalité vous offre une meilleure productivité et des performances dans les opérations d’E/S de fichier que 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

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

Value
Object

Required. Nom de variable valide qui contient les données écrites sur le disque.

RecordNumber
Int64

Optional. Numéro d’enregistrement (Random fichiers en mode) ou nombre d’octets (Binary fichiers en mode) au démarrage de l’écriture.

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 d’éviter les ambiguïtés au moment de FilePut la compilation si le type Object est passé au lieu d’un autre type, tel que Integer, Long, Shortet ainsi de suite.

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

FilePutObjectest valide uniquement en mode et Binary en Random mode.

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

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 RecordNumber, FilePutObject écrit l’enregistrement ou l’octet suivant après la dernière FileGetObjectFilePutObject ou fonction (ou l’enregistrement ou l’octet pointé par la dernière Seek fonction).

L’argument StringIsFixedLength contrôle si la fonction interprète les chaînes comme une variable ou une longueur 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 rempli 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 précisément, il est généralement judicieux d’avoir la longueur de l’enregistrement correspondant à la longueur des données écrites. Si la longueur des données écrites 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 l’objet VarType , 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 en tant que 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 au moins deux octets supérieurs au nombre réel 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 à deux octets identifiant l’objet VarType(8) , un descripteur à 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 de la FileOpen fonction doit être au moins quatre octets supérieurs à 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 dans laquelle vous lisez doit être la longueur correcte.

  • Si la variable en cours d’écriture est un tableau, la longueur d’enregistrement spécifiée par la clause de la RecordLengthFileOpen fonction doit être supérieure ou égale à la somme de tous les octets requis 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 rang. 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 mode s’appliquent Random , sauf :

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

S’applique à

Voir aussi