Universidade do Vale do Paraíba Colégio Técnico Antônio Teixeira Fernandes Disciplina Programação Orientada a Objetos I Material IV-Bimestre Criando um arquivo de dados. Abrindo e fechando um arquivo de dados. Processando um arquivo de dados. Processo de leitura, Escrita e Inserção em Arquivo, Menus e Dialogos site : Prof. Responsáveis Wagner Santos C. de Jesus 1
Arquivo de Dados Muitas informações precisam ler e escrever informações de um dispositivo de memória auxiliar. Essas informações são armazenadas no dispositivo na forma de um arquivo de dados. Os arquivos de dados nos permitem armazenar informações permanentemente e acessar e alterar essas informações sempre que necessário. 2
Usando Streams. A manipulação de arquivo em C normalmente é feita por intermédio de um recurso do sistema operacional denominado Stream (que vem a ser cadeia de caracteres ou bytes). Normalmente em C manipulamos arquivos de texto que são arquivo não formatados ou seja esse tipo de manipulação deve ser feita inteiramente por intermédio do programador que desenvolve a aplicação procedimento que da origem ao que chamamos de estrutura de banco de dados que são complexas e demando conhecimentos matemáticos de relacionamento intercessão. 3
Criando um arquivo de dados do tipo texto. Para se trabalhar com um arquivo de dados do tipo texto, o primeiro passo é estabelecer um buffer, onde as informações são armazenadas temporariamente durante a transferencia entre memória e computador (Dispositivo de gravação). 4
5
Criando um Buffer. (FILE) Para se criar um buffer é necessário usar o comando FILE que é um tipo de estrutura especial que estabelece o buffer. Para dar nome ao buffer colocamos uma variável do tipo ponteiro. 6
Para usar FILE é necessário utilizar a biblioteca. #include Sintaxe para criação de um Buffer. FILE * ; Exemplo : FILE *pt; 7
Abrindo e criando um arquivo - fopen() fopen() : Para se manipular um arquivo é preciso cria-lo para poder usar o recurso de leitura, e gravação. A função fopen retorna um ponteiro para o início do buffer associado ao arquivo. Um valor NULL é retornado quando o arquivo de dados não puder ser encontrado. 8
Sintaxe : = fopen(, ); 9
Exemplo : pt = fopen("c:/diretorio/teste.txt","r+"); Obs : Este exemplo abre um arquivo já existente para leitura e gravação. 10
Escrevendo dados em um Arquivo - fprintf() Para gravar uma informação em um arquivo usamos a função fprintf(), que permite escrever um dado no buffer. Sintaxe: fprintf(,<cadeia_Caracteres); Obs : A cadeia de ser sempre do tipo char. 11
Exemplo : fprintf(pt,"Gravando Arquivo"); 12
Fechando um arquivo de dados - fclose() Para se fechar um arquivo usamos a função fclose(), que permite remover todos os dados do buffer para o disco. Sintaxe : fclose( ); Exemplo : fclose(pt); 13
Exemplo de um programa para escrever um dado no arquivo. FILE *fp; fp = fopen("c:/ProjC++/teste.txt","r+"); fprintf(fp,"Corinthians do Rivelino..\n"); fclose(fp); 14
Leitura de um arquivo de dados - fgets(), feof(). Permite realizar a leitura de um ou mais registros em arquivo cada vez que fgets() é acionado desloca o ponteiro para o próximo registro até encontrar o final do arquivo. Que é indicado pela função feof(), que retorna verdadeiro caso o final do arquivo seja encontrado. Sintaxe : fgets(,, ); feof( ); 15
Exemplo : char v[30]; fp = fopen(arq,"r+"); while(!feof(fp)) { fgets(v,30,fp); ShowMessage(v); } fclose(fp); 16
Verificando se um arquivo existe ou não - FileExists(). FileExists() - Retorna um operador booleano se o arquivo existir no diretório específicado. Sintaxe : = FileExists( ); Exemplo : boolean t = FileExists("c:/Projeto/lista.txt"); 17
Uma estrutura vem a ser um tipo especial de dados que permite agrupar tipo de diferentes de dados em um só ambiente com se o conjunto fosse apenas um. Criando uma Estrutura de registros 18
Implementado a criação de uma estrutura de registros - struct struct - cria uma estrutura de registros para um determinado grupo de dados. Obs: A estrutura deve ser declarada no programa de forma global. Sintaxe : struct { ; } ; 19
Exemplo : struct dados { int n; AnsiString nome; double salario; }entrada; 20
Usando uma estrutura de registros. void __fastcall TForm1::Button1Click(TObject *Sender) { entrada.nome = "Maria da Silva"; entrada.salario = ; ShowMessage(entrada.salario); } 21
Uma estrutura de registro pode ser associada a um arquivo formando assim um banco de dados. Exemplo de arquivo com estrutura de registros. struct dados { char nome[30]; char salario[12]; }entrada; 22
Exemplo Gravação de uma estrutura em um arquivo de texto. void __fastcall TForm1::Button1Click(TObject *Sender) { FILE *fp; fp = fopen("c:/ProjC++/teste.txt","w+"); StrCopy(entrada.nome,"Maria da Silva,"); StrCopy(entrada.salario," \n"); fprintf(fp,entrada.nome); fprintf(fp,entrada.salario); fclose(fp); } 23
Mudando o nome do Arquivo. RenameFile() : Troca o nome do arquivo determinado em um diretório. Sintaxe : RenameFile(, ); Exemplo : RenameFile("c:/Projeto/teste.txt","c:/Projeto/testando.txt"); 24
DeleteFile() : Apaga um arquivo de um determinado diretório. Sintxe : RenameFile( ); Exemplo : DeleteFile("c:/Projeto/logica.txt"); 25
system() : Executa um comando do sistema operacional. Sintaxe : system( ); Exemplo : system("sol.exe"); 26
Permite a criação de uma região para digitação de texto. Memo deve ser usado com a propriedade Lines. Para adicionar um texto ao memo usamos método add(). Exemplo : Memo1->Lines->Add("Teste"); 27
Para contar o número de linhas de um texto usamos método count. Exemplo : int x = Memo1->Lines->Count; Para obter o uma linha de um texto usa-se o método. Strings[]. Exemplo : int i = 1; AnsiString p = Memo1->Lines->Strings[i]; 28
Para Gravar os dados de um determinado texto. SaveToFile(). Exemplo : Memo1->Lines->SaveToFile("teste.txt"); 29
Para Carregar os dados de um determinado texto. LoadFormFile(). Sintaxe: Memo1->Lines->LoadFromFile("teste.txt"); 30
SaveDialog e OpenDialog Paleta Dialog, permite criar uma janela onde o usuário poderã escolher um arquivo para abertura ou gravação. PropriedadesValores Default*.txt (extensão) FilenameCaminho e nome do arquivo FilterTexto|*.txt (nome e extensão do arquivo) InitialDirC:\lixo (Diretório padrão da caixa) 31
Método Execute() Executa a caixa de dialogo onde o arquivo escolhido será enviado para a propriedade FileName. Exemplo : SaveDialog1->Execute(); 32
Saída da caixa SaveDialog 33
FileName : Permite exibir o caminho e o nome do arquivo que foi escolhido. AnsiString cam = SaveDialog1->FileName; No exemplo acima o caminho armazenado na variável cam será c:\lixo\cripotografia.txt 34
MainMenu : Determina um menu de opções. (Basta digitar duplo click no objeto) Escrever opções na propriedade caption Para criar um submenu basta clicar na linha de baixo e escrever na propriedade caption. 35
Resultado na Execução do Menu 36
O código deverá ser colocado no evento OnClick do objeto MainMenu1 void __fastcall TForm1::Novo1Click(TObject *Sender) { ShowMessage(Click na opção Novo); } 37