Fórum Linhas em TXT #336418
18/01/2007
0
Estou desenvolvendo um aplicativo de monitoramento.
Preciso fazer um sistema de armazenamento de dados, onde os mesmos são salvos em um evento automático (tipo um timer).
Quero salvar os dados em um arquivo .txt e estou usando a seguinte rotina:
AssignFile(DBRALFM, SaveDialog1.FileName);
ReWrite(DBRALFM);
Writeln(DBRALFM,Timetostr(Hora),´ ´,a,´ ´,b);
CloseFile(DBRALFM);
Ele está salvando tudo certo mas com um problema: o algoritmo não pula linhas ou seja ele esta salvando sempre as informações sobre as ultimas informações. Está faltando um comando para que ele faça isto e não sei como fazer. Alguém sabe como posso fazer isto?
Um Abraço
Fabio
Eng_diehl
Curtir tópico
+ 0Posts
18/01/2007
Emerson Nascimento
procedure TForm1.Timer1Timer(Sender: TObject); var DBRALFM: TextFile; existe: boolean; arquivo: string; begin arquivo := ´c:\teste_append.txt´; existe := FileExists(arquivo); AssignFile(DBRALFM, arquivo); if existe then Append(DBRALFM) // se existe, inclui o texto no arquivo else Rewrite(DBRALFM); // se não existe, cria o arquivo Writeln(DBRALFM,Timetostr(Now),´ ´,´Teste1´,´ ´,´Teste2´); CloseFile(DBRALFM); end;
Gostei + 0
18/01/2007
Eng_diehl
Só que o nome do meu arquivo (onde eu armazenaria a principio os dados) era DBRALFM. Se com sua dica o arquivo é criado automaticamente, porque preciso utilizar o DBRALFM na rotina?
Abraço
Fabio
Gostei + 0
18/01/2007
Emerson Nascimento
você poderá manter como no seu original:
procedure TForm1.Timer1Timer(Sender: TObject); var DBRALFM: TextFile; existe: boolean; begin existe := FileExists(SaveDialog1.FileName); AssignFile(DBRALFM, SaveDialog1.FileName); if existe then Append(DBRALFM) // se existe, inclui o texto no arquivo else Rewrite(DBRALFM); // se não existe, cria o arquivo Writeln(DBRALFM,Timetostr(Hora), ´ ´, a, ´ ´, b); CloseFile(DBRALFM); end;
Gostei + 0
18/01/2007
Eng_diehl
Farei como voce sugeriu a primeira vez, todavia com a opção de escolha de diretorio e nome de arquivo com Edits.
Valeu pela ajuda...
Fabio
Gostei + 0
18/01/2007
Eng_diehl
Olha só como ele está gravando...
Queria que o numero da terceira coluna fosse compactado para 2 casas decimais. Usei a função RoundTo (a,-2).... mas nao deu certo não.
1/18/2007 5:45:54 PM 2.00000000000000E+0000
1/18/2007 5:45:55 PM 3.00000000000000E+0000
1/18/2007 5:45:56 PM 4.00000000000000E+0000
1/18/2007 5:45:57 PM 5.00000000000000E+0000
1/18/2007 5:45:58 PM 6.00000000000000E+0000
Tens alguma ideia??
Até mais
Fabio
Gostei + 0
18/01/2007
Emerson Nascimento
Gostei + 0
19/01/2007
Eng_diehl
procedure TForm1.Timer1Timer(Sender: TObject);
var
DBRALFM: textfile;
existe: boolean;
arquivo,s: string;
begin
Hora:=now;
s:=DateToStr(Hora);
if s[2] = ´/´ then
s:=s[3]+s[4]+´ ´+´0´+s[1]+´ ´+s[6]+s[7]+s[8]+s[9]
else
s:=s[4]+s[5]+´ ´+s[1]+s[2]+´ ´+s[7]+s[8]+s[9]+s[10];
Edit1.Text:=s;
nome:=s;
a:= a+1;
b:= a+b;
a:=RoundTo(a,-2);
b:=RoundTo(b,-2);
Edit2.text:=floattostr(a);
Edit3.text:=floattostr(b);
Series1.Addxy(Hora,a);
Series2.Addxy(Hora,2*a);
//salva os dados no arquivo criado
arquivo := ´c:\´+nome+´.txt´;
existe := FileExists(arquivo);
AssignFile(DBRALFM, arquivo);
if existe then
Append(DBRALFM)
else
ReWrite(DBRALFM);
Writeln(DBRALFM,Datetostr(Hora),´ ´,Timetostr(Hora),´ ´,a,´ ´,b);
CloseFile(DBRALFM);
end;
Gostei + 0
19/01/2007
Emerson Nascimento
procedure TForm1.Timer1Timer(Sender: TObject); var DBRALFM: textfile; existe: boolean; arquivo,s: string; begin // desligo o timer para não encavalar os processos Timer1.Enabled := False; Hora := now; s := FormatDateTime(´yyymmdd´,Hora); Edit1.Text:=s; nome:=s; a := a + 1; b := a + b; a := RoundTo(a,-2); b := RoundTo(b,-2); Edit2.text := floattostr(a); Edit3.text := floattostr(b); Series1.Addxy(Hora,a); Series2.Addxy(Hora,2*a); //salva os dados no arquivo criado arquivo := ´c:\´+nome+´.txt´; existe := FileExists(arquivo); AssignFile(DBRALFM, arquivo); if existe then Append(DBRALFM) else ReWrite(DBRALFM); Writeln(DBRALFM,Datetostr(Hora),´ ´,Timetostr(Hora),´ ´, format(´¬18.2f´,[a]),´ ´, format(´¬18.2f´,[b])); CloseFile(DBRALFM); // religo o timer Timer1.Enabled := True; end;
Gostei + 0
19/01/2007
Eng_diehl
Só por curiosidade qual a finalidade do ¬18???
E se eu quisesse alinhar um string?
Abraço
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)