Compartilhar via


Função FileGetObject

Lê dados de um arquivo aberto de disco para uma variável.

O recurso My dá a você maior produtividade e desempenho em operações de E/S de arquivos que FileGetObject.Para obter mais informações, consulte Objeto My.Computer.FileSystem.

Public Sub FileGetObject( _
   ByVal FileNumber As Integer, _
   ByRef Value As Object, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FileGetObject( _
   ByVal FileNumber As Integer, _
   ByRef Value As Short, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FileGetObject( _
   ByVal FileNumber As Integer, _
   ByRef Value As Integer, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FileGetObject( _
   ByVal FileNumber As Integer, _
   ByRef Value As Single, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FileGetObject( _
   ByVal FileNumber As Integer, _
   ByRef Value As Double, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FileGetObject( _
   ByVal FileNumber As Integer, _
   ByRef Value As Decimal, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FileGetObject( _
   ByVal FileNumber As Integer, _
   ByRef Value As Byte, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FileGetObject( _
   ByVal FileNumber As Integer, _
   ByRef Value As Boolean, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FileGetObject( _
   ByVal FileNumber As Integer, _
   ByRef Value As Date, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FileGetObject( _
   ByVal FileNumber As Integer, _
   ByRef Value As System.Array, _
   Optional RecordNumber As Integer = -1, _
   Optional ArrayIsDynamic As Boolean = False _
)
' -or-
Overloads Public Sub FileGetObject( _
   ByVal FileNumber As Integer, _
   ByRef Value As String, _
   Optional RecordNumber As Integer = -1, _
   Optional StringIsFixedLength As Boolean = False _
)

Parâmetros

  • FileNumber
    Obrigatório.Qualquer número de arquivo válido.

  • Value
    Obrigatório.Nome de variável válido em que dados sejam lidos.

  • RecordNumber
    Opcional.Gravar número (arquivos de modo Randoms) ou número de byte (arquivos de modoBinary) no qual a leitura começa.

  • ArrayIsDynamic
    Opcional.Aplica-se somente quando se escreve uma matriz.Especifica se a matriz deve ser tratada como dinâmica e se deseja gravar um descritor de matriz que descreve o tamanho e limites da matriz.

  • StringIsFixedLength
    Opcional.Aplica-se somente quando se grava uma sequência de caracteres.Especifica se deve gravar um descritor de dois bytes para a sequência de caracteres que descreve o comprimento.O padrão é False.

Comentários

A função FileGetObject é usada no lugar de FileGet para evitar ambiguidades no tempo de compilação se tipo Object é retornado em vez de outro tipo, como Integer,Long,Short,e assim por diante.

Se você pretende gravar o tipo Variant, FileGetObject será necessário.Quando na dúvida, se você estiver usando um objeto para o segundo parâmetro, é sempre recomendável que você usar FilePutObject e FileGetObject.

FileGetObject é válido somente nos modos Random e Binary.

Dados lidos com FileGetObject geralmente são gravados com FilePutObject.

O primeiro registro ou byte em um arquivo está na posição 1, o segundo registro ou de byte está na posição 2 e assim por diante.Se você omitir RecordNumber,FileGetObject lê o Registro ou byte após a última FileGetObject ou função FilePutObject (ou apontada pelo última função Seek).

Modo Aleatório

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

  • Se o comprimento dos dados que está sendo lidos é menor do que o comprimento especificado na cláusula RecordLength da função FileOpen,FileGetObject lê registros subsequentes em limites de comprimento registro.O espaço entre o final de um registro e o início do próximo registro é preenchido com o conteúdo existente no buffer de arquivo.Como a quantidade de preenchimento dados não pode ser determinada com precisão, é uma boa ideia ter o comprimento do registro corresponde ao tamanho dos dados que está sendo lidos.

  • Se for a variável sendo lida em uma sequência de caracteres, por padrão FileGetObject lê um descritor de dois bytes que contém o comprimento da sequência de caracteres e, em seguida, lê os dados que vai para a variável.Portanto, o comprimento do registro especificado pela cláusula RecordLengthou função FileOpen deve ser pelo menos dois bytes maior do que o comprimento real da sequência de caracteres.Visual Basic 6.0 e versões anteriores oferecem suporte sequências de comprimento fixo e quando lidos em um arquivo, o comprimento do descritor não é gravado.Se você desejar ler uma sequência de caracteres sem o descritor, você deve passar True para o parâmetro StringIsFixedLength,e a sequência de caracteres que você ler em deve ser o tamanho correto.

  • Se a variável sendo lida for uma matriz, então você pode optar ler um descritor para o tamanho e dimensão da matriz.Para ler o descritor, defina o parâmetro ArrayIsDynamic como True.Durante a leitura da matriz, você precisará coincidir com a forma que de matriz foi escrita.Se ele foi gravado com o descritor, você precisará ler o descritor.Se o descritor não for usado, o tamanho e limites da matriz passada para FileGetObject são usados para determinar o que ler.

    O descritor especifica a classificação de matriz, o tamanho e os limites inferiores para cada posição.Seu comprimento é 2, além de 8 vezes igual ao número de dimensões: 2 + 8 * NumberOfDimensions.O comprimento do registro especificado pelo parâmetro RecordLength na função FileOpen deve ser maior ou igual a soma de todos os bytes necessário para gravar os dados de matriz e o descritor de matriz.Por exemplo, a seguinte declaração de matriz requer 118 bytes quando a matriz é gravada no disco:

    Dim MyArray(4,9) As Integer
    

    Os 118 bytes são distribuídos da seguinte maneira: 18 bytes para o descritor (2 + 8 * 2) e 100 bytes de dados (2 * 10 * 5).

  • FileGetObject lê elementos de estruturas como se cada um estava sendo lido individualmente, exceto pelo fato de que haja nenhum preenchimento entre elementos.No disco, uma matriz dinâmica em um tipo definido pelo usuário (escrito com FilePutObject) tem o prefixo de um descritor cujo tamanho é igual 2, além de 8 horas ao número de dimensões: 2 + 8 * NumberOfDimensions.O comprimento do registro especificado pela cláusula RecordLength na função FileOpen deve ser maior ou igual a soma de todos os bytes necessários para ler os elementos individuais, incluindo qualquer matrizes e seus descritores.A Classe VBFixedStringAttribute pode ser aplicada a campos de sequência de caracteres nas estruturas para indicar o tamanho da sequência de caracteres quando gravados em disco.

Modo Binário

Para arquivos abertos no modo Binary, todas as regras Random se aplicam, com as seguintes exceções:

  • The RecordLength cláusula de FileOpen função não tem efeito. FileGetObject lê todas as variáveis do disco de forma contígua, ou seja, com nenhum preenchimento entre registros.

  • Para qualquer matriz que não seja uma matriz em uma estrutura, FileGetObject lê apenas os dados.Nenhum descritor é lido.

FileGetObject lê sequências de comprimento variável que não são elementos das estruturas sem esperar o descritor de dois bytes comprimento.O número de bytes lidos é igual ao número de caracteres já na sequência.

Observação de segurança:

Quando ler arquivos, não faça decisões sobre o conteúdo do arquivo baseado no nome de sua extensão.Por exemplo, um arquivo chamado Form1.vb pode não ser um Visual Basic arquivo de fonte.

Exemplo

O exemplo a seguir lê um registro em um arquivo de teste e em seguida o recupera.

Dim c As Object = "test"
FileSystem.FileOpen(1, "test.dat", OpenMode.Binary)
FileSystem.FilePutObject(1, "ABCDEF")
FileSystem.Seek(1, 1)
FileSystem.FileGetObject(1, c)
MsgBox(c)
FileSystem.FileClose(1)

Anotações Developer Dispositivo Inteligente

Não há suporte para esta função.

Requisitos

Namespace: Microsoft.VisualBasic

**Módulo:**FileSystem

Assembly: Visual Basic Runtime Library (em Microsoft.VisualBasic.dll)

Consulte também

Referência

Função FilePut

Função FileOpen

Função Buscar

Função FileGet

Outros recursos

Leitura de arquivos no Visual Basic

Gravando em Arquivos no Visual Basic