Visual Basic VIII Ficheiros de Acesso Aleatório CFAC Concepção e Fabrico Assistidos por Computador João Manuel R. S. Tavares Sumário 1. Tipos de dados definidos pelo programador. 2. Introdução aos ficheiros de acesso aleatório. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VIII - Ficheiros de Acesso Aleatório 2 @2009 - João Manuel R. S. Tavares 1
Tipos de Dados Definidos pelo Programador Além dos tipos de dados básicos disponíveis no Visual Basic, o programador também pode criar estruturas de dados particulares e especificas. Um exemplo típico é criar estruturas semelhantes a um registro de itens num arquivo, ou criar variáveis que servirão de padrão no programa. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VIII - Ficheiros de Acesso Aleatório 3 Tipos de Dados Definidos pelo Programador Sintaxe para criar um tipo: Type nome-do-tipo campo1 As tipo-do-campo1 campo2 As tipo-do-campo2... Exemplo: Type Reg_cliente nome As string *50 telefone As string *11 strings com tamanho de caracteres fixo. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VIII - Ficheiros de Acesso Aleatório 4 @2009 - João Manuel R. S. Tavares 2
Tipos de Dados Definidos pelo Programador Declaração de uma variável (registo) de um tipo definido pelo utilizador: Dim nome-da-variável As tipo-definido-pelo-programador Utilizar uma variável de um tipo definido pelo utilizador (registo): nome-da-variável.campo (utilizar o. para aceder a um determinado campo do registo) @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VIII - Ficheiros de Acesso Aleatório 5 Exemplo: Utilizar uma Variável de um Tipo definido pelo Programador Type Reg_cliente nome As string *50 telefone As string *11 Sub Le_Cliente Dim Cliente as Reg_cliente Cliente.nome = TXBNome.text Cliente.telefone = TXBTelefone.text Declaração de um tipo definido pelo programador. Variável local de um tipo definido pelo programador. Acesso aos campos de um registo. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VIII - Ficheiros de Acesso Aleatório 6 @2009 - João Manuel R. S. Tavares 3
Ficheiros de Acesso Aleatório Ficheiros de acesso aleatório contém apenas dados de um mesmo tipo definido pelo programador, designados por registos (records). Os registos são numerados (1, 2, ) e podem ser referenciados pelo seu número. Para ler/escrever um dado registo num ficheiro aleatório não é necessário ler/escrever os elementos precedentes. Sintaxe para abertura de um ficheiro de acesso aleatório: Open "filespec" For Random As #n Len = Len(recVar) onde recvar é uma variável do tipo registo, filespec o nome do ficheiro e n o se número de referência. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VIII - Ficheiros de Acesso Aleatório 7 Ficheiros de Acesso Aleatório Sintaxe para escrita de um registo no ficheiro: Put #n, r, recvar onde r é a posição no ficheiro na qual será escrito o registo. Sintaxe para a leitura de um registo a partir de um ficheiro: Get #n, r, recvar onde r é a posição do registo no ficheiro. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VIII - Ficheiros de Acesso Aleatório 8 @2009 - João Manuel R. S. Tavares 4
Ficheiros de Acesso Aleatório Função para determinar o número de caracteres contido num ficheiro: LOF(n) onde n é o número de referência do ficheiro. Determinação do número de registos do tipo recvar, definido pelo programador, existentes no ficheiro: LOF(n)/Len(recVar) onde n é o número de referência do ficheiro. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VIII - Ficheiros de Acesso Aleatório 9 Exemplo de Utilização de um Ficheiro de Acesso Aleatório: Criação e Escrita no Ficheiro Type collegedata nom As String * 30 'Name of college state As String * 2 'State where college is located yrfounded As Integer 'Year college was founded ' in the declaration section 'of general Dim recordnum As Integer @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VIII - Ficheiros de Acesso Aleatório 10 @2009 - João Manuel R. S. Tavares 5
Exemplo de Utilização de um Ficheiro de Acesso Aleatório: Criação e Escrita no Ficheiro (Cont.) Private Sub cmdaddcollege_click() Rem Write a record into the file COLLEGES.TXT Dim college As collegedata Let college.nom = txtcollege.text Let college.state = txtstate.text Let college.yrfounded = Val(txtYear.Text) Let recordnum = recordnum + 1 Put #1, recordnum, college Let txtcollege.text = "" Let txtstate.text = "" Let txtyear.text = "" txtcollege.setfocus @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VIII - Ficheiros de Acesso Aleatório 11 Exemplo de Utilização de um Ficheiro de Acesso Aleatório: Criação e Escrita no Ficheiro (Cont.) Private Sub cmddone e_click() c() Close #1 End Private Sub Form_Load() Rem Create COLLEGES.TXT Dim college As collegedata Open "COLLEGES.TXT" For Random As #1 Len = Len(college) Let recordnum = 0 @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VIII - Ficheiros de Acesso Aleatório 12 @2009 - João Manuel R. S. Tavares 6
Exemplo de Utilização de um Ficheiro de Acesso Aleatório: Acesso ao Ficheiro Type collegedata nom As String * 30 'Name of college state As String * 2 'State where college is located yrfounded As Integer 'Year college was founded Private Sub cmddisplay y_ Click() Call DisplayFile @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VIII - Ficheiros de Acesso Aleatório 13 Exemplo de Utilização de um Ficheiro de Acesso Aleatório: Acesso ao Ficheiro (Cont.) Private Sub DisplayFile() Dim recordnum As Integer Rem Access the random-access file COLLEGES.TXT Dim college As collegedata Open "COLLEGES.TXT" For Random As #1 Len = Len(college) picoutput.cls picoutput.print "College",, "State", "Year founded" For recordnum = 1To3 Get #1, recordnum, college picoutput.print college.nom, college.state, college.yrfounded Next recordnum Close #1 @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VIII - Ficheiros de Acesso Aleatório 14 @2009 - João Manuel R. S. Tavares 7