Conteúdo
Índice 🔎︎

# Instrução Input#

Lê dados de um ficheiro sequencial aberto.

## Sintaxe:

Input #FileNumber As Integer; var1[, var2[, var3[,...]]]

## Parâmetros:

NumFicheiro: número do ficheiro que contém os dados que pretende ler. O ficheiro terá de ser aberto através da instrução Open utilizando a palavra-chave INPUT.

var: Uma variável numérica ou de cadeia à qual se atribuem os valores lidos no ficheiro aberto.

A instrução Input# lê valores numéricos ou cadeias de um ficheiro aberto e atribui os dados a uma ou mais variáveis. Uma variável numérica lê-se até ao primeiro retorno de linha (Asc=13), mudança de linha (Asc=10), espaço ou vírgula. As variáveis de cadeia lêem-se até ao primeiro retorno de linha (Asc=13), mudança de linha (Asc=10) ou vírgula.

Os dados e os tipos de dados no ficheiro aberto têm de aparecer na mesma ordem das variáveis transferidas no parâmetro "var". Se atribuir valores não numéricos a uma variável numérica, "var" recebe um valor de "0".

Os registos separados por vírgulas não podem ser atribuídos a uma variável de cadeia. As aspas (") no ficheiro também são ignoradas. Se quiser ler estes caracteres no ficheiro, utilize a instrução Line Input# para ler ficheiros de texto puro (ficheiros que só contêm caracteres imprimíveis) linha a linha.

Se atingir o fim do ficheiro quando estiver a ler um elemento de dados, ocorrerá um erro e o processo será cancelado.

## Exemplo:

    Sub ExampleWorkWithAFile
    Dim iCount As Integer
    Dim sName As String
    Dim sValue As Integer
    Dim sFileName As String

    sFileName = "c:\data.txt"
    iCount = Freefile

    ' Escrever dados (que iremos utilizar mais tarde para Input ) no ficheiro
    Open sFileName For Output As iCount
    sName = "Hamburg"
    sValue = 200
    Write #iCount, sName, sValue
    sName = "New York"
    sValue = 300
    Write #iCount, sName, sValue
    sName = "Miami"
    sValue = 459
    Write #iCount, sName, sValue
    Close #iCount

    iCount = Freefile
    ' Ler dados utilizando Input
    Open sFileName For Input As iCount
    Input #iCount; sName, sValue
    MsgBox sName & " " & sValue
    Input #iCount; sName, sValue
    MsgBox sName & " " & sValue
    Input #iCount; sName, sValue
    MsgBox sName & " " & sValue
    Close #iCount
    End Sub