PDA

View Full Version : [Curso de Delphi] Aula 08 - By Tiago Assis



tiagoassis
17/02/2017, 04:11 AM
Saudações caros amigos da PerfectZone. Estou retomando ao curso de Delphi com o intuito de finalizado como descrito em nosso primeiro tópico de Introdução ao Curso de Delphi. Devido a diversos problemas pessoais acabei deixando o curso parado, porém estarei retomando o mesmo para vocês.

Nessa aula estaremos aprendendo um conceito básico de como manipular arquivos e ao mesmo tempo escrever e ler arquivos de texto, com isso aprenderemos a criar um sistema de Log para um sistema que possamos vir a desenvolver futuramente, além de algumas outras funções como cópia de segurança, entre outros.

De agora em diante, estaremos utilizando nesse curso o RadStudio 10 da Embarcadeiro, o motivo é que muitos programas desenvolvido em Delphi 7, software que iniciamos o curso estão apresentando algumas incompatibilidades com versões mais recentes do Windows, principalmente programas complexos. Porém nada impede de vocês utilizarem a versão que desejarem.

Cronograma da Aula
- Salvando conteúdo/variáveis em um arquivo texto
- Exemplo de criação de um log.txt


Salvando conteúdo/variáveis em um arquivo de texto

Algumas informações de um software desenvolvido em Delphi são salvas em arquivos textos, uma forma mais simples e rápida que não necessita de banco de dados, já que o mesmo é mais utilizado para salvar dados mais complexos com o objetivo até mesmo de serem acessados em rede. Então abaixo vai um exemplo:

Vamos criar um novo projeto no Delphi, organize-o da forma que você desejar... Adicione os seguintes componentes no mesmo:

- 3 Labels (Paleta Standard)
- 1 Memo (Paleta Standard)
- 2 Edits (Paleta Standard)
- 2 Buttons (Paleta Standard)

Altere as propriedades dos componentes da seguinte forma:

Label1
> Caption: Digite o conteúdo

Label2
> Caption: Nome

Label3
> Caption: Idade

Memo1
> ScrollBars: ssVertical

Button1
> Caption: Salvar Texto

Button2
> Caption: Salvar Dados


Organize esse formulário como mostra a figura abaixo:
[Only registered and activated users can see links]


No Evento Onliclick do button1 (Salvar Texto) digite o seguinte código:



procedure TForm1.Button1Click(Sender: TObject);
begin
// Salvar conteúdo de um Memo
Memo1.Lines.SaveToFile(ExtractFilePath(ParamStr(0) )+'\Texto.txt');

{
# Serão pegas todas as linhas do Memo e salvas em um arquivo Texto definido
# pelo usuário.

# ExtractFilePath tem por função de extrair o path (caminho) de onde se localiza
# determinado arquivo

# ParamStr(0) vai indicar que o arquivo a ser extraido o path é o nosso executável

# Sendo assim, o botão Salvar Texto irá salvar o conteúdo do Memo1 em um arquivo
# chamado Texto.txt no mesmo local onde está nosso Executável.
}
end;


No Evento Onclick do button2 (Salvar Dados) digite o seguinte código:



procedure TForm1.Button2Click(Sender: TObject);
var
Arquivo: TextFile; // Variável do tipo arquivo de texto
begin
// Salvar dados de campos
AssignFile(Arquivo, ExtractFilePath(ParamStr(0))+'\Dados.txt'); // Cria o arquivo na localização definida
Rewrite(Arquivo); // Reescreve o arquivo do zero
Writeln(Arquivo, 'Nome: '+Edit1.Text); // Escreve uma linha do arquivo com os dados de Edit1
Writeln(Arquivo, 'Idade: '+Edit2.Text); // Escreve uma nova linha do arquivo com os dados do Edit2
CloseFile(Arquivo); // Fecha o arquivo após inseridas as informações

{
# Nesse exemplo estamos fazendo com o componente edit1, porém pode ser realizado com
# variáveis, ai vai de sua criatividade.
}


Download do exemplo: [Only registered and activated users can see links]

Até a próxima aula galera :D

PS Sistemas
17/02/2017, 02:00 PM
Se a intenção futura é criar um sistema de log então o código do button2 deve ser corrigido para:


var
Arquivo: TextFile; // Variável do tipo arquivo de texto
NomeDoLog: String; // Variavel que irá conter o nome do log
begin
NomeDoLog := ExtractFilePath(ParamStr(0))+'\Dados.txt'; // Nome do arquivo a ser criado na localização definida
AssignFile(Arquivo, NomeDoLog);
if FileExists(NomeDoLog) then // Verificamos se o arquivo existe para próxima ação
Append(Arquivo) // Caso o arquivo exista o abre para adicionar as informações
else
ReWrite(Arquivo); // Cria o arquivo caso o mesmo não exista
try
// Salvar dados de campos no arquivo
Writeln(Arquivo, 'Nome: '+Edit1.Text); // Escreve uma linha do arquivo com os dados de Edit1
Writeln(Arquivo, 'Idade: '+Edit2.Text); // Escreve uma nova linha do arquivo com os dados do Edit2
finally
CloseFile(Arquivo) // Fecha o arquivo após inseridas as informações
end;

Assim funcionando como um sistema de log.

tiagoassis
17/02/2017, 02:57 PM
Se a intenção futura é criar um sistema de log então o código do button2 deve ser corrigido para:



Assim funcionando como um sistema de log.

Realmente, até me esqueci de fazer um exemplo de sistema de log kkkkkkkkk Obrigado manin PS.

Salvando conteúdo/variáveis em um arquivo de texto

Um outro exemplo que pode ser feito é o seguinte: Perante um erro do sistema o projeto automaticamente salvar tal log... Aqui abaixo vai um exemplo:

Crie um novo projeto no Delphi e adicione somente um Button1 (Paleta Standard).

Vamos supor que esse button tem a intenção de checar se existe determinado aquivo para o funcionamento do sistema. Nesse caso, se ele não encontrar o arquivo ele irá gerar o erro acompanhado de um log e logo após encerrará o sistema.

Para isso, precisamos criar uma procedure para o log que poderá ser utilizada facilmente. Aqui vai o exemplo:

Pressione F12 no seu form para acessar o código-fonte do mesmo e crie a seguinte função:



implementation

{$R *.dfm}

{
# Declare as seguintes variáveis Globais:
# Log: TextFile;
# Data: TDateTime;

# OBS, para ser uma variável Global, crie ela acima da palavra implementation.
}
procedure CriaLog(FileName, Msg: String);
begin
AssignFile(Log, FileName);
// Verifica se já existe o arquivo Log_erro
if not FileExists(FileName) then begin
Rewrite(Log); // Caso não existir o arquivo Log_Erro ele escreverá um novo arquivo
end
else begin
Append(Log); // Caso exista o arquivo Log_Erro ele continuará a inserção de dados no arquivo existente
end;
Data:=Now;
Writeln(Log, DateTimeToStr(Data)+' = '+Msg); // Adiciona a linha com a data, hora e a mensagem do log
CloseFile(Log); // Fecha o arquivo de Log

{
# DateTimeToStr = Fará a conversão da variável DateTime para String.
}


Após inserir essa procedure, pressione F12 novamente, vá para o Evento Onclick do Button1 e adicione o seguinte comando:



procedure TForm1.Button1Click(Sender: TObject);
begin
// verifica se existe o arquivo
if not FileExists(ExtractFilePath(ParamStr(0))+'\Config.t xt') then begin // Caso não existir o arquivo
ShowMessage('Arquivo não encontrado'); // mostra a mensagem que o arquivo não existe
CriaLog(ExtractFilePath(ParamStr(0))+'\Log_Erro.tx t', 'Arquivo não encontrado'); // Cria o Log com o caminho e a mensagem do mesmo (Procedure CriaLog)
ExitProcess(0); // Sai da aplicação
end;
end;


Agora vai da criatividade de vocês em tratar os erros de seus softwares com um sistema de log, pois a procedure pode ser utilizada a qualquer momento. Também o exemplo acima fala sobre log de erros, porém vocês poderão adaptar da forma que desejar como por exemplo, log de acompanhamento de atividades do usuário, log de ações do sistema, etc.

Download do Exemplo: [Only registered and activated users can see links]

Novamente um muito obrigado ao PS Sistema pela mão aqui :D