FileSystem.FileGetObject(Int32, Object, Int64) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Lit les données d’un fichier disque ouvert dans une variable. La fonctionnalité My
améliore la productivité et les performances des opérations d’E/S de fichier par rapport à FileGetObject
. Pour plus d'informations, consultez FileSystem.
public static void FileGetObject (int FileNumber, ref object Value, long RecordNumber = -1);
static member FileGetObject : int * obj * int64 -> unit
Public Sub FileGetObject (FileNumber As Integer, ByRef 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 la variable valide dans laquelle les données sont lues.
- RecordNumber
- Int64
Optionnel. Numéro d'enregistrement (fichiers en mode Random
) ou numéro d’octet (fichiers en mode Binary
) auquel la lecture débute.
Exemples
L’exemple suivant lit un enregistrement dans un fichier de test, puis le récupère.
Dim c As Object = "test"
FileSystem.FileOpen(1, "test.dat", OpenMode.Binary)
FileSystem.FilePutObject(1, "ABCDEF")
FileSystem.Seek(1, 1)
FileSystem.FileGetObject(1, c)
MsgBox(c)
FileSystem.FileClose(1)
Remarques
La FileGetObject
fonction est utilisée au lieu de pour éviter les ambiguïtés au moment de FileGet
la compilation si le type Object
est retourné à la place d’un autre type, tel que Integer
, Long
, Short
, et ainsi de suite.
Si vous envisagez d’écrire le Variant
type, FileGetObject
est obligatoire. En cas de doute, si vous utilisez un objet pour le deuxième paramètre, il est toujours recommandé d’utiliser FilePutObject
et FileGetObject
.
FileGetObject
est valide uniquement en Random
mode et Binary
.
Les données lues avec FileGetObject
sont généralement écrites avec FilePutObject
.
Le premier enregistrement ou octet d’un fichier se trouve à la position 1, le deuxième enregistrement ou octet est à la position 2, et ainsi de suite. Si vous omettez RecordNumber
, FileGetObject
lit l’enregistrement ou l’octet après la dernière FileGetObject
fonction ou FilePutObject
(ou pointé par la dernière Seek
fonction).
Mode aléatoire
Pour les fichiers ouverts en Random
mode, les règles suivantes s’appliquent :
Si la longueur des données lues est inférieure à la longueur spécifiée dans la
RecordLength
clause de laFileOpen
fonction,FileGetObject
lit 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 avec précision, il est judicieux de faire en sorte que la longueur de l’enregistrement corresponde à la longueur des données lues.Si la variable en cours de lecture est une chaîne, lit par défaut
FileGetObject
un descripteur de deux octets contenant la longueur de chaîne, puis lit les données qui vont dans la variable. Par conséquent, la longueur d’enregistrement spécifiée par laRecordLength
clause de laFileOpen
fonction doit être supérieure d’au moins deux octets à la longueur réelle de la chaîne. Visual Basic 6.0 et les versions antérieures prennent en charge les chaînes de longueur fixe et, lors de la lecture dans un fichier, le descripteur de longueur n’est pas écrit. Si vous souhaitez lire une chaîne sans le descripteur, vous devez passerTrue
auStringIsFixedLength
paramètre , et la chaîne que vous lisez doit avoir la longueur correcte.Si la variable en cours de lecture est un tableau, la longueur d’enregistrement spécifiée par le
RecordLength
paramètre dans laFileOpen
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 classement. Sa longueur est égale à 2 plus 8 fois le nombre de dimensions : 2 + 8 * NumberOfDimensions.Par exemple, la déclaration de tableau suivante nécessite 218 octets lorsque le tableau est écrit sur le disque :
Dim MyArray(4, 9) As Integer
Les 218 octets sont répartis comme suit : 18 octets pour le descripteur (2 + 8 * 2) et 100 octets pour les données (5 * 10 * 4).
FileGetObject
lit les éléments de structures comme si chacun d’eux était lu individuellement, sauf qu’il n’y a pas de remplissage entre les éléments. Sur le disque, un tableau dynamique de type défini par l’utilisateur (écrit avecFilePutObject
) est préfixé par un descripteur dont la longueur est égale à 2 plus 8 fois le nombre de dimensions : 2 + 8 * NumberOfDimensions. La longueur d’enregistrement spécifiée par laRecordLength
clause dans laFileOpen
fonction doit être supérieure ou égale à la somme de tous les octets requis pour lire les éléments individuels, y compris les tableaux et leurs descripteurs. La VBFixedStringAttribute classe peut être appliquée aux champs de chaîne dans les structures pour indiquer la taille de la chaîne lors de l’écriture sur le disque.
Mode binaire
Pour les fichiers ouverts en Binary
mode, toutes les Random
règles s’appliquent, avec les exceptions suivantes :
La
RecordLength
clause dans laFileOpen
fonction n’a aucun effet.FileGetObject
lit toutes les variables du disque de façon contiguë, c’est-à-dire sans remplissage entre les enregistrements.Pour tout tableau autre qu’un tableau dans une structure,
FileGetObject
lit uniquement les données. Aucun descripteur n’est lu.
FileGetObject
lit des chaînes de longueur variable qui ne sont pas des éléments de structures sans attendre le descripteur de longueur de deux octets. Le nombre d’octets lus est égal au nombre de caractères déjà présents dans la chaîne.
Important
Lors de la lecture à partir de fichiers, ne prenez pas de décisions concernant le contenu d’un fichier en fonction de l’extension de nom de fichier. Par exemple, un fichier nommé Form1.vb peut ne pas être un fichier source Visual Basic.