Dark Skyllen 7 #1 Postado 12 Dezembro, 2010 Manipulação de Arquivos DAT Neste tutorial irei ensiná-los a trabalhar com arquivos de extensão .dat no delphi 7. Os arquivos dat podem servir como uma espécie de banco de dados, guardando diversas informações. Então, mão na massa! Primeiro, para a criação e manipulação dos arquivos, precisamos de algo chamado record no delphi. São nessas estruturas que iremos guardar as informações. A declaração de um record, se dá na seguinte forma: type Data = record Nome: string[50]; Idade: integer; Codigo: integer; end; Onde o Data é o nome do nosso record e logo abaixo estão os campos pertecentes ao mesmo. Podemos declarar quantos campos quisermos. Em primeiro de tudo, precisamos criar uma variavel do tipo Data (o nosso record). A variável pode ser local ou global. Vamos declará-la como global para podermos manipular de qualquer procedure ou function. Para declarar, basta acrescentar após o var que fica antes do implementation: var Form1: TForm1; myData: Data; Para manipularmos o conteúdo do record é fácil. Suponhamos que tenho um form com 3 edits e um botão para cadastrar o usuário: procedure TForm1.Button1Click(Sender: TObject);begin myData.Nome := edtNome.Text; myData.Idade := StrToInt(edtIdade.Text); myData.Codigo := StrToInt(edtCodigo.Text);end; Pronto, agora que já sabemos como funciona um record iremos para outra parte: a de manipulação do arquivo. Para criarmos um arquivo .dat podemos usar o código à seguir: var F: file of Data;begin {Carregando o arquivo. Se não existir ele cria} AssignFile(F, 'arquivo.dat'); {File, Diretório} {Reescrevendo} Rewrite(F); {Escreve no arquivo} try Write(F, myData); finally CloseFile(F); end; Para ler o arquivo: var F: file of Data;begin {Carregando o arquivo} try AssignFile(F, 'C:\arquivo.dat'); Reset(F); {Resetando o arquivo} Read(F, myData); edtNome.Text := myData.Nome; edtIdade.Text := IntToStr(myData.Idade); edtCodigo.Text := IntToStr(myData.Codigo); finally CloseFile(F); end; Outro exemplo agora, só que trabalhando com arrays: myData: array of Data; procedure TForm1.Button1Click(Sender: TObject);var index, i: integer; F: file of Data;begin SetLength(myData, Length(myData)+1); {"aumenta" o tamanho do vetor} index := Length(myData)-1; myData[index].Nome := edtNome.Text; myData[index].Idade := StrToInt(edtIdade.Text); myData[index].Codigo := StrToInt(edtCodigo.Text); {Gravando no arquivo os dados} {Carregando o arquivo. Se não existir ele cria} AssignFile(F, 'C:\arquivo.dat'); {File, Diretório} {Reescrevendo} Rewrite(F); try for i := 0 to Length(myData)-1 do Write(F, myData[i]); finally CloseFile(F); end;end; E agora lendo os dados e jogando num StringGrid: procedure TForm1.Button2Click(Sender: TObject);var F: file of Data; auxData: Data; i: integer;begin {Carregando o arquivo} try AssignFile(F, 'C:\arquivo.dat'); Reset(F); {Resetando o arquivo} i := 1; while not EoF(F) do begin Read(F, auxData); StringGrid1.Cells[0, i] := auxData.Nome; StringGrid1.Cells[1, i] := IntToStr(auxData.Idade); StringGrid1.Cells[2, i] := IntToStr(auxData.Codigo); StringGrid1.RowCount := i+1; i := i+1; end; finally CloseFile(F); end;end; E também podemos trabalhar com posicionamento do cursor no arquivo: {Primeiro registro}Seek(F, 0);{12º Registro}Seek(F, 12);{Ultimo registro}Seek(F, FileSize(F)); Bom, é isso pessoal! Espero que gostem e qualquer dúvida ou sugestão postem no tópico! (Y) Abraços, Dark Skyllen 1 BlueeYakuzy reagiu a isto Compartilhar este post Link para o post Compartilhar em outros sites
HenneT 2 #2 Postado 13 Dezembro, 2010 Nunca tinha visto um código em delphi, me lembra C, algumas funções como por exemplo esse ultimo box dai de colocar o ponteiro em determinada posição do arquivo. Compartilhar este post Link para o post Compartilhar em outros sites
the frog 0 #3 Postado 13 Dezembro, 2010 muito bom gui depois vo salva aqui pra não fica te enxendo no msn, dsajiosadjosdajsad Compartilhar este post Link para o post Compartilhar em outros sites
godmasterlord 0 #4 Postado 12 Agosto, 2011 não seria mais fácil e prático criar pelo Database Desktop? 0.o Compartilhar este post Link para o post Compartilhar em outros sites
haxyy 0 #5 Postado 11 Dezembro, 2012 Muito bom! Compartilhar este post Link para o post Compartilhar em outros sites