Ir para conteúdo
Entre para seguir isso  
Dark Skyllen

Manipulando arquivos DAT

Recommended Posts

Dark Skyllen    7
Dark Skyllen

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

Compartilhar este post


Link para o post
Compartilhar em outros sites
HenneT    2
HenneT

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
the frog

muito bom gui :D

 

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
godmasterlord

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
haxyy

Muito bom!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×