FileSystem.FilePutObject(Int32, Object, Int64) Método

Definição

Grava dados de uma variável em um arquivo de disco. O My recurso oferece melhor produtividade e desempenho em operações de E/S de arquivo do que FilePutObject. Para obter mais informações, consulte FileSystem.

public static void FilePutObject(int FileNumber, object Value, long RecordNumber = -1);
static member FilePutObject : int * obj * int64 -> unit
Public Sub FilePutObject (FileNumber As Integer, Value As Object, Optional RecordNumber As Long = -1)

Parâmetros

FileNumber
Int32

Required. Qualquer número de arquivo válido.

Value
Object

Required. Nome de variável válido que contém dados gravados em disco.

RecordNumber
Int64

Optional. Número de registro (Random arquivos de modo) ou número de byte (Binary arquivos de modo) no qual a gravação é iniciada.

Exemplos

Este exemplo usa a FilePutObject função para gravar uma cadeia de caracteres em um arquivo.

Sub WriteData()
    Dim text As String = "test"
    FileOpen(1, "test.bin", OpenMode.Binary)
    FilePutObject(1, text)
    FileClose(1)
End Sub

Comentários

A FilePutObject função é usada em vez de FilePut evitar ambiguidades em tempo de compilação se o tipo Object for passado em vez de outro tipo, comoInteger, , LongShorte assim por diante.

FilePutObject grava e lê descritores que descrevem o objeto. Se você pretende escrever o Variant tipo, FilePutObject é necessário. Em caso de dúvida, se você estiver usando um objeto para o segundo parâmetro, recomendamos que você sempre use FilePutObject e FileGetObject.

FilePutObjecté válido somente no modo e Binary no Random modo.

Os dados gravados geralmente FilePutObject são lidos de um arquivo usando FileGetObject.

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 você omitir RecordNumber, FilePutObject gravará o próximo registro ou byte após a última FileGetObject ou FilePutObject função (ou o registro ou byte apontado pela última Seek função).

O StringIsFixedLength argumento controla se a função interpreta cadeias de caracteres como variável ou comprimento fixo. FilePutObject não grava o descritor de comprimento quando o argumento é True. Se você usar StringIsFixedLength = True com FilePutObject, terá que fazer o mesmo com FileGetObjecte também deve garantir que a cadeia de caracteres seja inicializada para o comprimento esperado.

Modo Aleatório

Para arquivos abertos no Random modo, as seguintes regras se aplicam:

  • Se o comprimento dos dados que estão sendo gravados for menor que o comprimento especificado na RecordLength cláusula da FileOpen função, FilePutObject gravará registros subsequentes nos limites de comprimento do registro. O espaço entre o final de um registro e o início do próximo registro é adicionado com o conteúdo existente do buffer de arquivo. Como a quantidade de dados de preenchimento não pode ser determinada com precisão, geralmente é uma boa ideia fazer com que o comprimento do registro corresponda ao comprimento dos dados que estão sendo gravados. Se o comprimento dos dados que estão sendo gravados for maior do que o comprimento especificado na RecordLength cláusula da FileOpen função, uma exceção será gerada.

  • Se a variável que está sendo gravada for um objeto que contém um tipo numérico, FilePutObject gravará dois bytes identificando o VarType objeto e gravará a variável. Por exemplo, ao escrever um objeto que contém um inteiro, FilePutObject grava seis bytes: dois bytes que identificam o objeto como VarType(3) (Integer) e quatro bytes que contêm os dados. O comprimento do registro especificado pelo RecordLength parâmetro na FileOpen função deve ser pelo menos dois bytes maior que o número real de bytes necessários para armazenar a variável.

  • Se a variável que está sendo gravada for um objeto que contém uma cadeia de caracteres, FilePutObject gravará um descritor de dois bytes identificando o VarType(8) objeto, um descritor de dois bytes que indica o comprimento da cadeia de caracteres e grava os dados da cadeia de caracteres. O comprimento do RecordLength registro especificado pelo parâmetro na FileOpen função deve ser pelo menos quatro bytes maior que o comprimento real da cadeia de caracteres. Se você quiser colocar uma cadeia de caracteres sem o descritor, deverá passar True para o StringIsFixedLength parâmetro e a cadeia de caracteres em que você leu deve ser o comprimento correto.

  • Se a variável que está sendo gravada for uma matriz, o comprimento do registro especificado pela RecordLength cláusula na FileOpen função deverá ser maior ou igual à soma de todos os bytes necessários para gravar os dados da matriz e o descritor da matriz. O descritor especifica a classificação da matriz, o tamanho e os limites inferiores para cada classificação. Seu comprimento é igual a 2 mais 8 vezes o número de dimensões: (2 + 8 * NumberOfDimensions).

Modo binário

Para arquivos abertos no Binary modo, todas as regras de Random modo se aplicam, exceto:

  • A RecordLength cláusula na FileOpen função não tem efeito. FilePutObject grava todas as variáveis no disco contíguamente, ou seja, sem preenchimento entre registros.

Aplica-se a

Confira também