Instrucción PutPut statement

Escribe datos desde una variable en un archivo de disco.Writes data from a variable to a disk file.

SintaxisSyntax

Put [ # ] númeroarchivo, [ númeroreg ], varnamePut [ # ] filenumber, [ recnumber ], varname


La sintaxis de la instrucción Put tiene estas partes:The Put statement syntax has these parts:

PartPart DescripciónDescription
númeroArchivofilenumber Obligatorio.Required. Cualquier número de archivo válido.Any valid file number.
númeroregrecnumber Opcional.Optional. Variant (Long).Variant (Long). Número de registro (archivos de modo Random ) o número de byte (archivos de modo Binary) en el que comienza la escritura.Record number (Random mode files) or byte number (Binary mode files) at which writing begins.
varnamevarname Necesario.Required. Nombre de la variable que contiene los datos que se van a escribir en el disco.Name of the variable containing data to be written to disk.

ObservacionesRemarks

Los datos escritos con Put se suelen leer desde un archivo con Get.Data written with Put is usually read from a file with Get.

El primer registro o byte de un archivo se encuentra en la posición 1, el segundo registro o byte se encuentra en la posición 2, etc.The first record or byte in a file is at position 1, the second record or byte is at position 2, and so on. Si se omite númeroreg, se escribe el siguiente registro o byte después de la última instrucción Get o Put , o señalado por la última función Seek .If you omit recnumber, the next record or byte after the last Get or Put statement, or pointed to by the last Seek function, is written. Debe incluir comas de delimitación, por ejemplo:You must include delimiting commas, for example:

Put #4,,FileBuffer 

Para los archivos abiertos en el modo Random, se aplican las siguientes reglas:For files opened in Random mode, the following rules apply:

  • Si la longitud de los datos que se están escribiendo es menor que la longitud especificada en la cláusula Len de la instrucción Open , Put escribe los registros posteriores en los límites de longitud de registro.If the length of the data being written is less than the length specified in the Len clause of the Open statement, Put writes subsequent records on record-length boundaries. El espacio comprendido entre el final de un registro y el comienzo del siguiente se rellena con el contenido existente del búfer de archivos.The space between the end of one record and the beginning of the next record is padded with the existing contents of the file buffer. Dado que la cantidad de datos no se puede determinar con ninguna certeza, suele ser buena idea que la longitud de registro coincida con la longitud de los datos que se están escribiendo.Because the amount of padding data can't be determined with any certainty, it is generally a good idea to have the record length match the length of the data being written. Si la longitud de los datos que se está escribiendo es mayor que la longitud especificada en la cláusula Len de la instrucción Open, se produce un error.If the length of the data being written is greater than the length specified in the Len clause of the Open statement, an error occurs.

  • Si la variable que se está escribiendo en una cadena de longitud de variable, Put escribe un descriptor de 2 bytes que contiene la longitud de la cadena y, a continuación, la variable.If the variable being written is a variable-length string, Put writes a 2-byte descriptor containing the string length and then the variable. La longitud de registro especificada en la cláusula Len de la instrucción Open debe tener al menos 2 bytes más que la longitud real de la cadena.The record length specified by the Len clause in the Open statement must be at least 2 bytes greater than the actual length of the string.

  • Si la variable que se está escribiendo es una Variant de un tipo numérico, Put escribe 2 bytes que identifican el VarType de la Variant y, a continuación, escribe la variable.If the variable being written is a Variant of a numeric type, Put writes 2 bytes identifying the VarType of the Variant and then writes the variable. Por ejemplo, al escribir una Variant de VarType 3, Put escribe 6 bytes: 2 bytes que identifican la Variant como VarType 3 (Long) y 4 bytes que contienen los datos Long.For example, when writing a Variant of VarType 3, Put writes 6 bytes: 2 bytes identifying the Variant as VarType 3 (Long) and 4 bytes containing the Long data. La longitud de registro especificada por la cláusula Len de la instrucción Open debe tener al menos 2 bytes más que el número real de bytes necesario para almacenar la variable.The record length specified by the Len clause in the Open statement must be at least 2 bytes greater than the actual number of bytes required to store the variable.

    Nota

    [!NOTA] Puede usar la instrucción Put para escribir unamatriz Variant en disco pero no puede usar Put para escribir una Variant escalar que contiene una matriz en disco.You can use the Put statement to write a Variantarray to disk, but you can't use Put to write a scalar Variant containing an array to disk. Tampoco puede usar Put para escribir objetos en disco.You also can't use Put to write objects to disk.

  • Si la variable que está escribiendo es una Variant de VarType 8 (String), Put escribe 2 bytes que identifican el VarType, 2 bytes que indican la longitud de la cadena y, a continuación, escribe los datos de la cadena.If the variable being written is a Variant of VarType 8 (String), Put writes 2 bytes identifying the VarType, 2 bytes indicating the length of the string, and then writes the string data. La longitud de registro especificada en la cláusula Len de la instrucción Open debe tener al menos 4 bytes más que la longitud real de la cadena.The record length specified by the Len clause in the Open statement must be at least 4 bytes greater than the actual length of the string.

  • Si la variable que se está escribiendo es una matriz dinámica, Put escribe un descriptor cuya longitud es igual a 2 más 8 veces el número de dimensiones, es decir, 2 + 8 * NúmeroDeDimensiones.If the variable being written is a dynamic array, Put writes a descriptor whose length equals 2 plus 8 times the number of dimensions, that is, 2 + 8 * NumberOfDimensions. La longitud del registro especificado por la cláusula Len en la instrucción Open debe ser mayor o igual a la suma de todos los bytes requeridos para escribir los datos de matriz y el descriptor de matriz.The record length specified by the Len clause in the Open statement must be greater than or equal to the sum of all the bytes required to write the array data and the array descriptor. Por ejemplo, la siguiente declaración de matriz requiere 118 bytes cuando la matriz se escribe en el disco.For example, the following array declaration requires 118 bytes when the array is written to disk.

    Dim MyArray(1 To 5,1 To 10) As Integer 
    
    
  • Los bytes 118 se distribuyen de la siguiente manera: 18 bytes para2 + 8 * 2el descriptor () y 100 bytes5 * 10 * 2para los datos ().The 118 bytes are distributed as follows: 18 bytes for the descriptor (2 + 8 * 2), and 100 bytes for the data (5 * 10 * 2).

  • Si la variable que se está escribiendo es una matriz de tamaño fijo, Put solo escribe los datos.If the variable being written is a fixed-size array, Put writes only the data. No se escribe ningún descriptor en el disco.No descriptor is written to disk.

  • Si la variable que se está escribiendo es cualquier otro tipo de variable (no una cadena de longitud variable o una Variant), Put escribe solo los datos de variable.If the variable being written is any other type of variable (not a variable-length string or a Variant), Put writes only the variable data. La longitud de registro especificada por la cláusula Len de la instrucción Open debe ser mayor o igual que la longitud de los datos que se están escribiendo.The record length specified by the Len clause in the Open statement must be greater than or equal to the length of the data being written.

  • Put escribe elementos de tipos definidos por el usuario como si cada uno de ellos estuviera escrito individualmente, excepto que no hay relleno entre los elementos.Put writes elements of user-defined types as if each were written individually, except that there is no padding between elements. En el disco, a una matriz dinámica de un tipo definido por el usuario escrito con Put se le incluye como prefijo un descriptor cuya longitud es igual a 2 más 8 veces el número de dimensiones, es decir, 2 + 8 * NúmeroDeDimensiones.On disk, a dynamic array in a user-defined type written with Put is prefixed by a descriptor whose length equals 2 plus 8 times the number of dimensions, that is, 2 + 8 * NumberOfDimensions. La longitud de registro especificada por la cláusula Len de la instrucción Open debe ser mayor o igual que la suma de todos los bytes requeridos para escribir los elementos individuales, incluidas las matrices y sus descriptores.The record length specified by the Len clause in the Open statement must be greater than or equal to the sum of all the bytes required to write the individual elements, including any arrays and their descriptors.

Para los archivos abiertos en el modo Binary, se aplican todas las reglas Random, excepto:For files opened in Binary mode, all of the Random rules apply, except:

  • La cláusula Len de la instrucción Open no tiene efecto.The Len clause in the Open statement has no effect. Put escribe todas las variables en el disco de manera contigua; es decir, sin relleno entre registros.Put writes all variables to disk contiguously; that is, with no padding between records.

  • Para cualquier matriz distinta de una matriz en un tipo definido por el usuario, Put solo escribe los datos.For any array other than an array in a user-defined type, Put writes only the data. No se escribe ningún descriptor.No descriptor is written.

  • Put escribe las cadenas de longitud variable que no son elementos de tipos definidos por el usuario sin el descriptor de longitud de 2 bytes.Put writes variable-length strings that are not elements of user-defined types without the 2-byte length descriptor. El número de bytes escritos es igual al número de caracteres en la cadena.The number of bytes written equals the number of characters in the string. Por ejemplo, las siguientes instrucciones escriben 10 bytes en el número de archivo 1:For example, the following statements write 10 bytes to file number 1:

      VarString$ = String$(10," ") 
      Put #1,,VarString$ 
    
    

EjemploExample

Este ejemplo usa la instrucción Put para escribir datos en un archivo.This example uses the Put statement to write data to a file. Cinco registros del tipo definido por el usuario se escriben en el archivo.Five records of the user-defined type are written to the file.

Type Record ' Define user-defined type. 
 ID As Integer 
 Name As String * 20 
End Type 
 
Dim MyRecord As Record, RecordNumber ' Declare variables. 
' Open file for random access. 
Open "TESTFILE" For Random As #1 Len = Len(MyRecord) 
For RecordNumber = 1 To 5 ' Loop 5 times. 
 MyRecord.ID = RecordNumber ' Define ID. 
 MyRecord.Name = "My Name" & RecordNumber ' Create a string. 
 Put #1, RecordNumber, MyRecord ' Write record to file. 
Next RecordNumber 
Close #1 ' Close file. 

Vea tambiénSee also

Soporte técnico y comentariosSupport and feedback

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación?Have questions or feedback about Office VBA or this documentation? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.