Get (Instrucción)

Visual Basic VBLR

Get (Instrucción)

       

Lee datos de un archivo de disco abierto y coloca la información en una variable.

Sintaxis

Get [#]númeroarchivo, [númeroregistro], nombrevariable

La sintaxis de la instrucción Get consta de las siguientes partes:

Parte Descripción
númeroarchivo Requerido. Cualquier número de archivo válido.
númeroregistro Opcional. Un tipo Variant (Long). Número de registro (archivos en modo Random) o número de byte (archivos en modo Binary) desde el que comienza la lectura.
nombrevariable Requerido. Nombre de una variable válida en la que se colocan los datos.

Comentarios

Los datos que se leen con Get se escriben habitualmente en un archivo con Put.

El primer registro o byte de un archivo se encuentra en la posición 1, el segundo en la posición 2 y así sucesivamente. Si omite númeroregistro, se lee el siguiente registro o byte que se encuentra después de la última instrucción Get o Put (o al que señala la última función Seek). Debe incluir las comas de delimitación, por ejemplo:

Get #4,,BúferArchivo

En los archivos abiertos en modo Random se aplican las siguientes reglas:

  • Aunque la longitud de la información que se lee sea menor que la especificada en la cláusula Len de la instrucción Open, Get lee los registros siguientes según los límites de longitud de registro. El espacio comprendido entre el final de un registro y el principio del siguiente se llena con el contenido del búfer del archivo. Puesto que la cantidad de la información de relleno no se puede determinar con certeza, es conveniente hacer que el registro tenga la misma longitud que la información que se lee.

  • Si la variable en la que se lee la información es una cadena de caracteres de longitud variable, Get lee un descriptor de 2 bytes que contiene la longitud de la cadena de caracteres y a continuación los datos que van en la variable. Por lo tanto, la longitud del registro especificada por la cláusula Len de la instrucción Open debe ser por lo menos 2 bytes mayor que la longitud real de la cadena de caracteres.

  • Si la variable que se va a leer es una variable Variant de tipo numérico, Get lee 2 bytes que identifican el VarType del tipo Variant y luego los datos que van en la variable. Por ejemplo, cuando se lee un tipo Variant de VarType 3, Get lee 6 bytes: 2 bytes identifican el tipo Variant como VarType 3 (Long) y 4 bytes contienen el dato tipo Long. La longitud del registro, especificada por la cláusula Len de la instrucción Open, debe ser por lo menos 2 bytes mayor que el número real de bytes necesario para almacenar la variable.

    Nota   Puede utilizar la instrucción Get para leer una matriz Variant del disco, pero no puede emplear Get para leer una Variant escalar que contenga una matriz Tampoco podrá utilizar Get para leer objetos del disco.

  • Si la variable que se va a leer es una Variant de tipo VarType 8 (String), Get lee 2 bytes que identifican el VarType, 2 bytes que indican la longitud de la cadena de caracteres y luego la propia cadena. La longitud del registro especificada por la cláusula Len de la instrucción Open debe ser por lo menos 4 bytes mayor que la longitud real de la cadena.

  • Si la variante que va a leer es una matriz dinámica, Get lee un descriptor cuya longitud equivale a 2 más 8 veces el número de dimensiones, es decir, 2 + 8 * NumberOfDimensions. La longitud del registro especificada por la cláusula Len de la instrucción Open debe ser mayor o igual que la suma de todos los bytes necesarios para leer los datos y el descriptor de la matriz. Por ejemplo, la siguiente declaración de matriz requiere 118 bytes cuando la matriz se escribe en disco.
    Dim MiMatriz(1 To 5,1 To 10) As Integer
    

    Los 118 bytes se distribuyen de la siguiente forma: 18 bytes para el descriptor (2 + 8 * 2) y 100 bytes para los datos (5 * 10 * 2).

  • Si la variable que va a leer es una matriz de tamaño fijo, Get lee solamente los datos. No lee ningún descriptor.

  • Si la variable que va a leer es cualquier otro tipo de variable (no una cadena de longitud variable ni un tipo Variant), Get lee solamente los datos variables. La longitud del registro especificada por la cláusula Len de la instrucción Open debe ser mayor o igual que la longitud de los datos que está leyendo.

  • Get lee elementos de tipos definidos por el usuario como si cada uno de ellos se leyera individualmente, excepto en que no hay relleno entre los elementos. En disco, una matriz dinámica de un tipo definido por el usuario (escrito con Put) tiene como prefijo un descriptor cuya longitud es igual a 2 más 8 veces el número de dimensiones, es decir, 2 + 8 * NumberOfDimensions. La longitud del registro especificada por la cláusula Len de la instrucción Open debe ser mayor o igual que la suma de todos los bytes necesarios para leer cada uno de los elementos, incluyendo las matrices y sus descriptores.

En los archivos abiertos en modo Binary tienen vigencia todas las reglas del modo Random, con las siguientes excepciones:

  • La cláusula Len de la instrucción Open no tiene efecto. Get lee del disco todas las variables en forma contigua, es decir, sin relleno entre registros.

  • Para cualquier matriz distinta de las utilizadas en un tipo definido por el usuario, Get lee solamente los datos. No lee ningún descriptor.

  • Get lee las cadenas de caracteres de longitud variable que no son elementos de tipos definidos por el usuario, sin esperar el descriptor de longitud de 2 bytes. El número de bytes leídos es igual al número de caracteres existentes en la cadena. Por ejemplo, las siguientes instrucciones leen 10 bytes del archivo número 1:
    VarCadena = String(10," ")
    
    Get #1,,VarCadena