Put (Instrucción)

Visual Basic VBLR

Put (Instrucción)

       

Escribe en un archivo de disco los datos contenidos en una variable.

Sintaxis

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

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

Parte Descripción
númeroarchivo Requerido. Cualquier número de archivo válido.
númeroregistro Opcional. Tipo Variant (Long). Número de registro (archivos en modo Random) o número de byte (archivos en modo Binary, en el cual se comienza a escribir.
nombrevariable Requerido. Nombre de la variable que contiene la información que se va a escribir en el disco.

Comentarios

Los datos que se escriben con Put normalmente se leen de un archivo con Get.

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 escribe el siguiente registro o byte que se encuentra después de la última instrucción Get o Put o aquél al que señala la última función Seek. Debe incluir comas de delimitación, por ejemplo:

Put #4,, BúferArchivo

En los archivos abiertos en modo Random rigen las siguientes reglas:

  • Aunque la longitud de los datos escritos sea menor que la especificada en la cláusula Len de la instrucción Open, Put escribe los registros siguientes según los límites de longitud de registro y llena el espacio entre el fin de un registro y el comienzo del siguiente con el contenido del búfer del archivo. Puesto que la cantidad de datos de relleno no se puede determinar con certeza, es conveniente que el registro tenga la misma longitud que los datos que se escriben. Si la longitud de los datos que se escriben es mayor que la especificada en la cláusula Len de la instrucción Open, ocurre un error.

  • Si la variable en la que se escribe es una cadena de longitud variable, la instrucción Put escribe un descriptor de 2 bytes que indica la longitud de la cadena y luego escribe la variable. La longitud del registro, especificada por la cláusula de la instrucción Open, debe ser por lo menos 2 bytes mayor que la longitud real de la cadena.

  • Si la variable que se va a escribir es un Variant de un tipo numérico, Put escribe 2 bytes para identificar el VarType del Variant y luego escribe la variable. Por ejemplo, al escribir un Variant de VarType 3, Put escribe 6 bytes: 2 bytes para identificar un Variant de VarType 3 (Long) y 4 bytes que contienen los datos del 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 necesarios para almacenar la variable.

    Nota   Puede utilizar la instrucción Put para escribir una matriz Variant en disco, pero no puede emplear Put para escribir en disco un Variant escalar que contiene una matriz. Tampoco puede utilizar Put para escribir objetos en disco.

  • Si la variable escrita es una Variant del tipo VarType 8 (String), Put escribe 2 bytes para identificar el VarType, 2 bytes para indicar la longitud de la cadena y luego los datos de la 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 variable escrita es una matriz dinámica, Put escribe 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 escribir 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 escrita es una matriz de tamaño fijo, Put solamente escribe los datos. No se escribe en disco ningún descriptor.

  • Si la variable que se escribe es de cualquier otro tipo (ni una cadena de longitud variable ni una Variant), Put escribe solamente los datos de la variable. 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 escritos.

  • Put escribe elementos de tipos definidos por el usuario como si escribiera cada uno por separado, pero no coloca datos de relleno entre los elementos. En el disco, una matriz dinámica en un tipo definido por el usuario escrita con Put incluye 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 escribir los elementos por separado, incluyendo algunas matrices y sus descriptores.

Para 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. Put escribe todas las variables en el disco en forma contigua, es decir sin relleno entre registros.

  • Para cualquier matriz distinta de la indicada en un tipo definido por el usuario, Put escribe solamente los datos. No escribe ningún descriptor.

  • Put escribe las cadenas de caracteres de longitud variable que no son elementos de tipos definidos por el usuario sin el descriptor de longitud de 2 bytes. El número de bytes que se escribe es igual al número de caracteres de la cadena. Por ejemplo, en las siguientes instrucciones se escribe 10 bytes en el archivo número 1:
    VarCadena$ = String$(10," ")
    
    Put #1,,VarCadena$