Instrução Put
Escreve dados de uma variável num ficheiro de disco.
Sintaxe
Put [ # ] filenumber, [ recnumber ], varname
A sintaxe da instrução Put tem as seguintes partes:
Sair | Descrição |
---|---|
númerodoarquivo | Obrigatório. Qualquer número de arquivo válido. |
renumeração | Opcional. Variante (Longo). Número de registo (ficheiros de modo aleatório ) ou número de byte (ficheiros de modo binário ) no qual a escrita começa. |
nomedavariável | Obrigatório. Nome da variável que contém dados a serem escritos no disco. |
Comentários
Normalmente, os dados escritos com Put são lidos a partir de um ficheiro com Get.
O primeiro registo ou byte num ficheiro está na posição 1, o segundo registo ou byte está na posição 2 e assim sucessivamente. Se omitir renumeração, o registo seguinte ou byte após a última instrução Get ou Put , ou apontado pela última função Seek , é escrito. Tem de incluir vírgulas delimitador, por exemplo:
Put #4,,FileBuffer
Para ficheiros abertos no modo Aleatório , aplicam-se as seguintes regras:
Se o comprimento dos dados que estão a ser escritos for inferior ao comprimento especificado na cláusula Len da instrução Open , Put escreve registos subsequentes em limites de comprimento de registo. O espaço entre o fim de um registo e o início do registo seguinte é acolchoado com o conteúdo existente da memória intermédia de ficheiros. Uma vez que a quantidade de dados de preenchimento não pode ser determinada com certeza, é geralmente boa ideia que o comprimento do registo corresponda ao comprimento dos dados que estão a ser escritos. Se o comprimento dos dados que estão a ser escritos for maior do que o comprimento especificado na cláusula Len da instrução Open , ocorre um erro.
Se a variável que está a ser escrita for uma cadeia de comprimento variável, Put escreve um descritor de 2 bytes que contém o comprimento da cadeia e, em seguida, a variável. O comprimento do registo especificado pela cláusula Len na instrução Open tem de ser, pelo menos, 2 bytes superior ao comprimento real da cadeia.
Se a variável que está a ser escrita for uma Variante de um tipo numérico, Colocar escreve 2 bytes que identificam o VarType da Variante e, em seguida, escreve a variável. Por exemplo, ao escrever uma Variante de VarType 3, Colocar escreve 6 bytes: 2 bytes que identificam a Variante como VarType 3 (Longo) e 4 bytes que contêm os dados Longos . O comprimento do registo especificado pela cláusula Len na instrução Open tem de ser, pelo menos, 2 bytes superior ao número real de bytes necessários para armazenar a variável.
Observação
Utilize a instrução Put para escrever uma matrizvariante no disco, mas não pode utilizar Put para escrever uma Variante escalar que contenha uma matriz no disco. Também não pode utilizar Put para escrever objetos no disco.
Se a variável que está a ser escrita for uma Variante de VarType 8 (Cadeia), a opção Colocar escreve 2 bytes que identificam o VarType, 2 bytes que indicam o comprimento da cadeia e, em seguida, escreve os dados da cadeia. O comprimento do registo especificado pela cláusula Len na instrução Open tem de ser, pelo menos, 4 bytes superior ao comprimento real da cadeia.
Se a variável que está a ser escrita for uma matriz dinâmica, Put escreve um descritor cujo comprimento é igual a 2 mais 8 vezes o número de dimensões, ou seja, 2 + 8 * NumberOfDimensions. O comprimento do registo especificado pela cláusula Len na instrução Open tem de ser maior ou igual à soma de todos os bytes necessários para escrever os dados da matriz e o descritor de matriz. Por exemplo, a seguinte declaração de matriz requer 118 bytes quando a matriz é escrita no disco.
Dim MyArray(1 To 5,1 To 10) As Integer
Os 118 bytes são distribuídos da seguinte forma: 18 bytes para o descritor (
2 + 8 * 2
) e 100 bytes para os dados (5 * 10 * 2
).Se a variável que está a ser escrita for uma matriz de tamanho fixo, Colocar escreve apenas os dados. Não foi escrito nenhum descritor no disco.
Se a variável que está a ser escrita for qualquer outro tipo de variável (não uma cadeia de comprimento variável ou uma Variante), Colocar escreve apenas os dados da variável. O comprimento do registo especificado pela cláusula Len na instrução Open tem de ser maior ou igual ao comprimento dos dados que estão a ser escritos.
Coloque os elementos de escrita de tipos definidos pelo utilizador como se cada um tivesse sido escrito individualmente, exceto que não existe preenchimento entre elementos. No disco, uma matriz dinâmica num tipo definido pelo utilizador escrita com Put é prefixada por um descritor cujo comprimento é igual a 2 mais 8 vezes o número de dimensões, ou seja, 2 + 8 * NumberOfDimensions. O comprimento do registo especificado pela cláusula Len na instrução Open tem de ser maior ou igual à soma de todos os bytes necessários para escrever os elementos individuais, incluindo quaisquer matrizes e respetivos descritores.
Para ficheiros abertos no modo Binário , aplicam-se todas as regras Aleatórias , exceto:
A cláusula Len na instrução Open não tem efeito. Colocar todas as variáveis escritas no disco contíguamente; ou seja, sem preenchimento entre registos.
Para qualquer matriz que não seja uma matriz num tipo definido pelo utilizador, Colocar escreve apenas os dados. Não foi escrito nenhum descritor.
Coloque cadeias de carateres de comprimento variável de escrita que não sejam elementos de tipos definidos pelo utilizador sem o descritor de comprimento de 2 bytes. O número de bytes escritos é igual ao número de carateres na cadeia. Por exemplo, as seguintes instruções escrevem 10 bytes para o número de ficheiro 1:
VarString$ = String$(10," ") Put #1,,VarString$
Exemplo
Este exemplo utiliza a instrução Put para escrever dados num ficheiro. Cinco registos do tipo definido pelo utilizador são escritos no ficheiro.
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.
Confira também
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.