Controle de fluxo Eof Eof(Stream) Devolve True (verdadeiro) quando chega ao final do Arquivo e False (falso) em caso contrário. Public Sub Main() Dim Arquivo As Stream Dim Linhas As String Arqui vo = Open "/etc/passwd" For Read While Not Eof(Arquivo) Line Input #Arquivo, Linhas Print Linhas Wend Close Arquivo End Lof Lof(Stream) Se o Stream (Fluxo de dados) é um arquivo, devolve seu tamanho. Se em lugar de um arquivo é um Socket de uma conexão de rede ou um objeto Process, devolve o número de bytes que podemos ler de uma só vez. Uma vez vista as sentenças mais comuns para manipular o fluxo de dados, Vamos a alguns exemplos de uso: Public Sub Main() Dim Arquivo As Stream Arquivo = Open "/etc/passwd" For Read Print Read #Arquivo, Lof(Arquivo) Close Arquivo End Seek Seek[#] Stream, Posição Define a posição do ponteiro no Stream. Para a próxima operação de leitura ou gravação. A posição é definida por um valor que representa a quantidade de bytes onde o ponteiro é posicionado. No caso a seguir o ponteiro é movido 10 bytes em relação ao inicio do arquivo. Seek #Arquivo, 10 Se valor referente a posição for negativa, o fluxo de ponteiro é movido relativamente ao final do Stream. No exemplo a seguir 10 bytes antes do final do arquivo. 14 Seek #Arquivo, -10 Usamos a função Lof para mover o ponteiro para o fim do Stream, Seek #Arquivo, Lof(Arquivo) O exemplo a seguir mostra como mover o ponteiro e realizar uma operação de leitura no arquivo. Public Sub Main() Dim Arquivo As Stream Arquivo = Open "/etc/passwd" For Read Seek #Arquivo, 10 Print Read #Arquivo, 10 Seek #Arquivo, -10 Print Read #Arquivo, 10 Seek #Arquivo, Lof(Arquivo) Arquivo.Close End Seek Posição = Seek(Stream) Pega a posição do ponteiro no Stream. Pega a posição do ponteiro no Stream e retorna o valor atual do ponteiro. O valor de retorno é um longo inteiro. Muitos tipos de Stream não tem um ponteiro: como por exemplo, Processo, soquete, … Public Sub Main() Dim Arquivo As Stream Arquivo = Open "/etc/passwd" For Read Seek #Arquivo, Lof(Arquivo) Print Seek(Arquivo) Arquivo.Close End Flush Flush [[#] Stream] Limpa a saída de uma Stream bufferizada. Se nenhum stream é especificado, todos os stream abertos é limpo. 15