Linhas em TXT
Ola galera do Delphi...
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
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
Curtidas 0
Respostas
Emerson Nascimento
18/01/2007
tente assim:
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
Eng_diehl
18/01/2007
Grande ajuda Emerson...
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
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
Emerson Nascimento
18/01/2007
na função, [b:21d37fb62e]DBRALFM[/b:21d37fb62e] não é o nome do arquivo, e sim uma variável texto usada para manipular o conteúdo do arquivo; o nome do arquivo, no exemplo é ´c:\teste_append.txt´
você poderá manter como no seu original:
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
Eng_diehl
18/01/2007
Não irei manter o nome fixo.
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
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
Eng_diehl
18/01/2007
Blz??
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
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
Emerson Nascimento
18/01/2007
publique o código que você está usando. o problema deve estar nele, e não na função RoundTo()
GOSTEI 0
Eng_diehl
18/01/2007
Tá aiii...
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;
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
Emerson Nascimento
18/01/2007
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
Eng_diehl
18/01/2007
Legal... valeu
Só por curiosidade qual a finalidade do ¬18???
E se eu quisesse alinhar um string?
Abraço
Só por curiosidade qual a finalidade do ¬18???
E se eu quisesse alinhar um string?
Abraço
GOSTEI 0