Resultados 1 a 3 de 3
  1. #1
    Developer C++ tiagoassis's Avatar

    Data de Ingresso
    Jan 2015
    Posts
    127
    Thanks Thanks Given 
    72
    Thanks Thanks Received 
    3
    Thanked in
    3 Posts
    Mencionado
    54 Post(s)
    MEU HUMOR
    Cool
    País
    Brazil

    [Curso de Delphi] Aula 08 - By Tiago Assis

    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:



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

    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:

    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: [Somente membros podem ver os links. ]

    Até a próxima aula galera
    Last edited by tiagoassis; 18/02/2017 at 10:07 AM.

    Tiago Assis Softwares

  2. #2
    Developer Delphi PS Sistemas's Avatar
    Data de Ingresso
    Aug 2015
    Posts
    103
    Thanks Thanks Given 
    6
    Thanks Thanks Received 
    15
    Thanked in
    6 Posts
    Mencionado
    22 Post(s)
    MEU HUMOR
    Yeehaw
    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.
    Last edited by PS Sistemas; 17/02/2017 at 03:03 PM.
    [Somente membros podem ver os links. ]

  3. #3
    Developer C++ tiagoassis's Avatar

    Data de Ingresso
    Jan 2015
    Posts
    127
    Thanks Thanks Given 
    72
    Thanks Thanks Received 
    3
    Thanked in
    3 Posts
    Mencionado
    54 Post(s)
    MEU HUMOR
    Cool
    País
    Brazil
    Citação Originally Posted by PS Sistemas Ver Post
    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 k 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:

    Código:
    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:

    Código:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      // verifica se existe o arquivo
      if not FileExists(ExtractFilePath(ParamStr(0))+'\Config.txt') 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.txt', '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: [Somente membros podem ver os links. ]

    Novamente um muito obrigado ao PS Sistema pela mão aqui
    Last edited by tiagoassis; 18/02/2017 at 10:08 AM.

    Tiago Assis Softwares

Tags para este Tópico

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • You may not post Resposta(s)
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •  
Sobre nós
Somos uma comunidade em atividade a 8 anos que aborda assuntos relacionados a games em geral, principalmente games MMORPG. e que busca sempre ajudar os membros através de conteúdos, tutoriais e suporte...
Nossos anunciantes
Hinetworks
VelozHost
InovHost
Rede Sociais