Ir para conteúdo
Fórum Script Brasil
  • 0

(RESOLVIDO) Ajuda Delphi - Criaçao De Log


Monky

Pergunta

Boas Pessoal...

Estou com umas dificuldades em fazer a criação de um ficheiro de log, eu estou a desenvolver um projecto de segurança nesse projecto tenho um cofre que abre e fecha atravez do programa em delphi o que pretendia era criar um log a dizer se a porta do cofre tinha sido aberta ou fechada, a que horas, e em que dia, e depois também queria fazer outro para dois sensores que tenho, para saber quando foram desligados e ligados e ainda outro para saber a data e hora do disparo do alarme...

Como controlo todos os sensores e a porta do cofre atravez da paralela aqui vos deixo o esquema de bits que tenho:

Setbit(0)=Fazer motor andar para um lado

Setbit(1)=Fazer motor andar para o outro lado

Setbit(5)=Saida para a buzina(alarme)

S4=Sensor1

S5=Sensor2

Aqui fica um pedaço do codigo das minhas esperiencias a tentar criar os log files...

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IniFiles;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    Button3: TButton;
    ColorDialog1: TColorDialog;
    Edit1: TEdit;
    GroupBox1: TGroupBox;
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  NomeDoLog: String;
  Arquivo: TextFile;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  Ini: TIniFile;
begin
NomeDoLog := 'historico.hst';
  AssignFile(Arquivo, NomeDoLog);
  if FileExists(NomeDoLog) then
    Append(arquivo) { se existir, apenas adiciona linhas }
  else
    ReWrite(arquivo); { cria um novo se não existir }
  try
    WriteLn(arquivo, '------------------------');
    WriteLn(arquivo, 'Aqui Nesta Linha Queria Colocar a hora e a data');
    WriteLn(arquivo, 'Aqui O estado, ou seja se a porta do cofre foi aberta ou fechada');
    WriteLn(arquivo, '------------------------');
    WriteLn(arquivo, 'Aqui Nesta Linha Queria Colocar a hora e a data');
    WriteLn(arquivo, 'Aqui o estado dos sensores, se estes tinhas sido desligados');
    WriteLn(arquivo, '------------------------');
    WriteLn(arquivo, 'Aqui Nesta Linha Queria Colocar a hora e a data');
    WriteLn(arquivo, 'O alarme foi accionado');
finally
    CloseFile(arquivo)
  end;
  // isto convem por no OnShow
  Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'config.ini');
  Self.Color := StringToColor(Ini.ReadString('CONF', 'COR', '$00FFFFFF'));
  // este $00FFFFFF é só um default caso o ficheiro n exista
  FreeAndNil(Ini); 
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
NomeDoLog:='historico.hst';
if FileExists(NomeDoLog) then memo1.Lines.LoadFromFile('historico.hst');
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  Ini: TIniFile;
begin
if colordialog1.Execute then
begin
  form1.Color:=colordialog1.Color;
  groupbox1.Color:=colordialog1.Color;

  edit1.Text:=ColorToString(colordialog1.color);
  Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'config.ini');
  Ini.WriteString('CONF', 'COR', edit1.Text);
  FreeAndNil(Ini);
end;

end;

end.

Editado por Monky
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

quanto a gravar hora e data:

WriteLn(arquivo, FormatDateTime('hh:nn - dd/mm/yyyy', Now)); // gravando hora e data

já quanto a gravar o estado, ou seja se a porta do cofre foi aberta ou fechada, esta informação não deveria ser gravada quando este estado mudasse? Seja quando você dá o comando ou quando dê esta informação?

Voce poderia enviar o comando de abertura e simplesmente a porta não abrir. Não seria conveniente registrar o comando, e depois registrar a leitura da situação da porta? Você recebe de algum modo a informação de que a porta abriu ou fechou?

Você citou um função SetBit usada para setar um determinado bit na porta paralela. No momento em que você enviar estar informação para a porta, seria o momento de gravar a mensagem de que foi solicitado o fechamento ou abertura. O evento OnCreate, não parece ser o local mais apropriado para isto.

Já se você receber algum evento, ou fizer alguma leitura da porta paralela, este seria o momento de registrar a situação em que a porta se encontra.

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...