Carregar String Grid com valores de Lista
20/04/2020
0
Olá a todos!
Sou novato em Delphi e estou precisando de uma ajuda para fazer uma planilha ou carregar um Strig Grid com valores vindos de um arquivo TXT onde o mesmo possui a seguinte sequencia:
Data ESPAÇO Hora ESPAÇO Pressão ESPAÇO Vazão
EX: 29/06/2018 16:45:37 26,6 0,000
Gostaria de apresentar o Número de pontos, Data, Hora, Valor da Pressão e Valor da Vazão
Nº de Pontos Data Hora Pressão (mca) Vazão (m3/h) Totalizador (m3)
1 20/04/2020 09:25:08 33,0 2,048 0,000
2 20/04/2020 09:30:08 32,0 2,052 0,035
3... 20/04/2020 09:35:08 33,0 2,048 0,053
Por enquanto está mostrando dados por ListBox e Gráfico TChart.
OBS: Demora muito para carregar e criar o gráfico também!
Alguém me sugere como fazer ou mostrar um exemplo?
procedure TF_Grafico.Botao_AbrirClick(Sender: TObject);
var
ArqTxt : TextFile;
linha : string;
Coluna: TStringList;
I: Integer;
begin
Chart1.Title.Text.Clear; // Limpa Texto do Gráfico
Chart1.Series[0].Clear; // Limpa o Gráfico 0
Chart1.Series[1].Clear; // Limpa o Gráfico 1
DataHora := ''''''''''''''''; // Limpa a Variável DataHora
DataHoraInicio := '''''''''''''''';
DataHoraTermino := '''''''''''''''';
if OpenDialog1.Execute then // Abre Diretório do Arquivo
if Application.MessageBox(''''''''Deseja Realmente Carregar o Arquivo Selecionado?'''''''',pchar(application.title),+MB_ICONQUESTION+MB_YESNO+MB_DEFBUTTON1) = id_yes then
begin
// Cria um array dinâmico
Coluna := TStringList.Create;
AssignFile(ArqTxt,OpenDialog1.FileName); // Abrir o arquivo
Reset(ArqTxt); // Reseta o Arquivo txt
X := 0; // Carrega a Variável X com 0
Readln(ArqTxt, Linha); // Leitura da Linha do Arquivo txt
DataHoraInicio:= DataHoraInicio + copy(linha, 1, 19); // Copia a Data e Hora Inicial das Coletas na Linha do Arquivo txt
Reset(ArqTxt); // Reseta o Arquivo txt
Chart1.Title.Text.Add(OpenDialog1.FileName); // Carrega a Variável Chart1 com o Nome do Arquivo
while not eof(ArqTxt) do // Aguarda Leitura do Arquivo até a última linha
begin
Readln(ArqTxt, Linha); // Leitura da Linha do Arquivo txt
listbox1.Items.add(linha); // Copia a Linha do Arquivo txt
for I := 0 to ListBox1.Items.Count - 1 do // Efetua a Leitura de Linha a Linha
begin
Coluna.Text := StringReplace(ListBox1.Items.Strings[I], '''''''' '''''''', #13, [rfReplaceAll]); // Carrega a Variável Coluna com os Itens e Valores da Linha
end;
DataHora := DataHora + copy(linha, 1, 19); // Copia a Data e Hora da Linha do Arquivo txt
PressaoY := Coluna[2]; // Copia a Pressão da Linha do Arquivo txt
VazaoY := Coluna[3]; // Copia a Vazão da Linha do Arquivo txt
chart1.Series[1].AddXY(X, StrToFloat(PressaoY), FormatDateTime(''''''''DD''''''''+''''''''/''''''''+''''''''MM''''''''+''''''''/''''''''+''''''''YY''''''''+'''''''' ''''''''+''''''''HH''''''''+'''''''':''''''''+''''''''NN''''''''+'''''''':''''''''+''''''''SS'''''''', StrToDateTime(DataHora)),1); // Plota o Gráfico da Pressão
chart1.Series[0].AddXY(X, StrToFloat(VazaoY), FormatDateTime(''''''''DD''''''''+''''''''/''''''''+''''''''MM''''''''+''''''''/''''''''+''''''''YY''''''''+'''''''' ''''''''+''''''''HH''''''''+'''''''':''''''''+''''''''NN''''''''+'''''''':''''''''+''''''''SS'''''''', StrToDateTime(DataHora)),1); // Plota o Gráfico da Vazão
DataHora := ''''''''''''''''; // Limpa a Variável DataHora
PressaoY := ''''''''''''''''; // Limpa a Variável PressaoY
VazaoY := ''''''''''''''''; // Limpa a Variável VazaoY
Inc(X); // Incrementa o Eixo X do Gráfico
Edit6.Text := MaiorVazao; // Mostra Maior Vazão
Edit4.Text := MenorVazao; // Mostra Menor Vazão
Edit3.Text := MaiorPressao; // Mostra Maior Pressão
Edit1.Text := MenorPressao; // Mostra Menor Pressão
end;
Edit7.Text := ''''''''Canal 1''''''''; // Apresenta os Canais de Referências
Edit8.Text := ''''''''Canal 2'''''''';
Edit9.Text := ''''''''Pressão''''''''; // Apresenta a Variável de Engenharia como Pressão
Edit10.Text := ''''''''Vazão''''''''; // Apresenta a Variável de Engenharia como Vazão
Edit11.Text := ''''''''mca''''''''; // Apresenta a Unidade de Pressão
Edit12.Text := F_Vazao.Label2.Caption; // Apresenta a Unidade de Vazão
DataHoraTermino := DataHoraTermino + copy(linha, 1, 19); // Copia a Data e Hora do Final das Coletas na Linha do Arquivo txt
Edit15.Text := FormatDateTime(''''''''DD''''''''+''''''''/''''''''+''''''''MM''''''''+''''''''/''''''''+''''''''YY''''''''+'''''''' ''''''''+''''''''HH''''''''+'''''''':''''''''+''''''''NN''''''''+'''''''':''''''''+''''''''SS'''''''', StrToDateTime(DataHoraInicio));// Mostra a Data e Hora Inicial das Coletas
Edit16.Text := FormatDateTime(''''''''DD''''''''+''''''''/''''''''+''''''''MM''''''''+''''''''/''''''''+''''''''YY''''''''+'''''''' ''''''''+''''''''HH''''''''+'''''''':''''''''+''''''''NN''''''''+'''''''':''''''''+''''''''SS'''''''', StrToDateTime(DataHoraInicio));// Mostra a Data e Hora Inicial das Coletas
Edit17.Text := FormatDateTime(''''''''DD''''''''+''''''''/''''''''+''''''''MM''''''''+''''''''/''''''''+''''''''YY''''''''+'''''''' ''''''''+''''''''HH''''''''+'''''''':''''''''+''''''''NN''''''''+'''''''':''''''''+''''''''SS'''''''', StrToDateTime(DataHoraTermino));// Mostra a Data e Hora Final das Coletas
Edit18.Text := FormatDateTime(''''''''DD''''''''+''''''''/''''''''+''''''''MM''''''''+''''''''/''''''''+''''''''YY''''''''+'''''''' ''''''''+''''''''HH''''''''+'''''''':''''''''+''''''''NN''''''''+'''''''':''''''''+''''''''SS'''''''', StrToDateTime(DataHoraTermino));// Mostra a Data e Hora Final das Coletas
ListBox1.Items.Text := StringReplace(ListBox1.Items.Text,'''''''' '''''''','''''''' '''''''',[rfReplaceAll]);
{************************************************************
Crie esta função para fazer o cálculo da pressão da vazão
para outro cálculo basta implementar na função.
************************************************************}
ShowMessage(SomaTotal());
// Destroi o array dinâmico
FreeAndNil(Coluna);
//Closefile(ArqTxt); // Fecha o Arquivo txt
end;
Closefile(ArqTxt); // Fecha o Arquivo txt
//ListBox1.Items.Clear; // Limpa o ListBox1
end;
Sou novato em Delphi e estou precisando de uma ajuda para fazer uma planilha ou carregar um Strig Grid com valores vindos de um arquivo TXT onde o mesmo possui a seguinte sequencia:
Data ESPAÇO Hora ESPAÇO Pressão ESPAÇO Vazão
EX: 29/06/2018 16:45:37 26,6 0,000
Gostaria de apresentar o Número de pontos, Data, Hora, Valor da Pressão e Valor da Vazão
Nº de Pontos Data Hora Pressão (mca) Vazão (m3/h) Totalizador (m3)
1 20/04/2020 09:25:08 33,0 2,048 0,000
2 20/04/2020 09:30:08 32,0 2,052 0,035
3... 20/04/2020 09:35:08 33,0 2,048 0,053
Por enquanto está mostrando dados por ListBox e Gráfico TChart.
OBS: Demora muito para carregar e criar o gráfico também!
Alguém me sugere como fazer ou mostrar um exemplo?
procedure TF_Grafico.Botao_AbrirClick(Sender: TObject);
var
ArqTxt : TextFile;
linha : string;
Coluna: TStringList;
I: Integer;
begin
Chart1.Title.Text.Clear; // Limpa Texto do Gráfico
Chart1.Series[0].Clear; // Limpa o Gráfico 0
Chart1.Series[1].Clear; // Limpa o Gráfico 1
DataHora := ''''''''''''''''; // Limpa a Variável DataHora
DataHoraInicio := '''''''''''''''';
DataHoraTermino := '''''''''''''''';
if OpenDialog1.Execute then // Abre Diretório do Arquivo
if Application.MessageBox(''''''''Deseja Realmente Carregar o Arquivo Selecionado?'''''''',pchar(application.title),+MB_ICONQUESTION+MB_YESNO+MB_DEFBUTTON1) = id_yes then
begin
// Cria um array dinâmico
Coluna := TStringList.Create;
AssignFile(ArqTxt,OpenDialog1.FileName); // Abrir o arquivo
Reset(ArqTxt); // Reseta o Arquivo txt
X := 0; // Carrega a Variável X com 0
Readln(ArqTxt, Linha); // Leitura da Linha do Arquivo txt
DataHoraInicio:= DataHoraInicio + copy(linha, 1, 19); // Copia a Data e Hora Inicial das Coletas na Linha do Arquivo txt
Reset(ArqTxt); // Reseta o Arquivo txt
Chart1.Title.Text.Add(OpenDialog1.FileName); // Carrega a Variável Chart1 com o Nome do Arquivo
while not eof(ArqTxt) do // Aguarda Leitura do Arquivo até a última linha
begin
Readln(ArqTxt, Linha); // Leitura da Linha do Arquivo txt
listbox1.Items.add(linha); // Copia a Linha do Arquivo txt
for I := 0 to ListBox1.Items.Count - 1 do // Efetua a Leitura de Linha a Linha
begin
Coluna.Text := StringReplace(ListBox1.Items.Strings[I], '''''''' '''''''', #13, [rfReplaceAll]); // Carrega a Variável Coluna com os Itens e Valores da Linha
end;
DataHora := DataHora + copy(linha, 1, 19); // Copia a Data e Hora da Linha do Arquivo txt
PressaoY := Coluna[2]; // Copia a Pressão da Linha do Arquivo txt
VazaoY := Coluna[3]; // Copia a Vazão da Linha do Arquivo txt
chart1.Series[1].AddXY(X, StrToFloat(PressaoY), FormatDateTime(''''''''DD''''''''+''''''''/''''''''+''''''''MM''''''''+''''''''/''''''''+''''''''YY''''''''+'''''''' ''''''''+''''''''HH''''''''+'''''''':''''''''+''''''''NN''''''''+'''''''':''''''''+''''''''SS'''''''', StrToDateTime(DataHora)),1); // Plota o Gráfico da Pressão
chart1.Series[0].AddXY(X, StrToFloat(VazaoY), FormatDateTime(''''''''DD''''''''+''''''''/''''''''+''''''''MM''''''''+''''''''/''''''''+''''''''YY''''''''+'''''''' ''''''''+''''''''HH''''''''+'''''''':''''''''+''''''''NN''''''''+'''''''':''''''''+''''''''SS'''''''', StrToDateTime(DataHora)),1); // Plota o Gráfico da Vazão
DataHora := ''''''''''''''''; // Limpa a Variável DataHora
PressaoY := ''''''''''''''''; // Limpa a Variável PressaoY
VazaoY := ''''''''''''''''; // Limpa a Variável VazaoY
Inc(X); // Incrementa o Eixo X do Gráfico
Edit6.Text := MaiorVazao; // Mostra Maior Vazão
Edit4.Text := MenorVazao; // Mostra Menor Vazão
Edit3.Text := MaiorPressao; // Mostra Maior Pressão
Edit1.Text := MenorPressao; // Mostra Menor Pressão
end;
Edit7.Text := ''''''''Canal 1''''''''; // Apresenta os Canais de Referências
Edit8.Text := ''''''''Canal 2'''''''';
Edit9.Text := ''''''''Pressão''''''''; // Apresenta a Variável de Engenharia como Pressão
Edit10.Text := ''''''''Vazão''''''''; // Apresenta a Variável de Engenharia como Vazão
Edit11.Text := ''''''''mca''''''''; // Apresenta a Unidade de Pressão
Edit12.Text := F_Vazao.Label2.Caption; // Apresenta a Unidade de Vazão
DataHoraTermino := DataHoraTermino + copy(linha, 1, 19); // Copia a Data e Hora do Final das Coletas na Linha do Arquivo txt
Edit15.Text := FormatDateTime(''''''''DD''''''''+''''''''/''''''''+''''''''MM''''''''+''''''''/''''''''+''''''''YY''''''''+'''''''' ''''''''+''''''''HH''''''''+'''''''':''''''''+''''''''NN''''''''+'''''''':''''''''+''''''''SS'''''''', StrToDateTime(DataHoraInicio));// Mostra a Data e Hora Inicial das Coletas
Edit16.Text := FormatDateTime(''''''''DD''''''''+''''''''/''''''''+''''''''MM''''''''+''''''''/''''''''+''''''''YY''''''''+'''''''' ''''''''+''''''''HH''''''''+'''''''':''''''''+''''''''NN''''''''+'''''''':''''''''+''''''''SS'''''''', StrToDateTime(DataHoraInicio));// Mostra a Data e Hora Inicial das Coletas
Edit17.Text := FormatDateTime(''''''''DD''''''''+''''''''/''''''''+''''''''MM''''''''+''''''''/''''''''+''''''''YY''''''''+'''''''' ''''''''+''''''''HH''''''''+'''''''':''''''''+''''''''NN''''''''+'''''''':''''''''+''''''''SS'''''''', StrToDateTime(DataHoraTermino));// Mostra a Data e Hora Final das Coletas
Edit18.Text := FormatDateTime(''''''''DD''''''''+''''''''/''''''''+''''''''MM''''''''+''''''''/''''''''+''''''''YY''''''''+'''''''' ''''''''+''''''''HH''''''''+'''''''':''''''''+''''''''NN''''''''+'''''''':''''''''+''''''''SS'''''''', StrToDateTime(DataHoraTermino));// Mostra a Data e Hora Final das Coletas
ListBox1.Items.Text := StringReplace(ListBox1.Items.Text,'''''''' '''''''','''''''' '''''''',[rfReplaceAll]);
{************************************************************
Crie esta função para fazer o cálculo da pressão da vazão
para outro cálculo basta implementar na função.
************************************************************}
ShowMessage(SomaTotal());
// Destroi o array dinâmico
FreeAndNil(Coluna);
//Closefile(ArqTxt); // Fecha o Arquivo txt
end;
Closefile(ArqTxt); // Fecha o Arquivo txt
//ListBox1.Items.Clear; // Limpa o ListBox1
end;
Anderson
Curtir tópico
+ 0
Responder
Posts
20/04/2020
Anderson
Corrigindo o trecho do código.
procedure TF_Grafico.Botao_AbrirClick(Sender: TObject); var ArqTxt : TextFile; linha : string; Coluna: TStringList; I: Integer; begin Chart1.Title.Text.Clear; // Limpa Texto do Gráfico Chart1.Series[0].Clear; // Limpa o Gráfico 0 Chart1.Series[1].Clear; // Limpa o Gráfico 1 DataHora := ''; // Limpa a Variável DataHora DataHoraInicio := ''; DataHoraTermino := ''; if OpenDialog1.Execute then // Abre Diretório do Arquivo if Application.MessageBox('Deseja Realmente Carregar o Arquivo Selecionado?',pchar(application.title),+MB_ICONQUESTION+MB_YESNO+MB_DEFBUTTON1) = id_yes then begin // Cria um array dinâmico Coluna := TStringList.Create; AssignFile(ArqTxt,OpenDialog1.FileName); // Abrir o arquivo Reset(ArqTxt); // Reseta o Arquivo txt X := 0; // Carrega a Variável X com 0 Readln(ArqTxt, Linha); // Leitura da Linha do Arquivo txt DataHoraInicio:= DataHoraInicio + copy(linha, 1, 19); // Copia a Data e Hora Inicial das Coletas na Linha do Arquivo txt Reset(ArqTxt); // Reseta o Arquivo txt Chart1.Title.Text.Add(OpenDialog1.FileName); // Carrega a Variável Chart1 com o Nome do Arquivo while not eof(ArqTxt) do // Aguarda Leitura do Arquivo até a última linha begin Readln(ArqTxt, Linha); // Leitura da Linha do Arquivo txt listbox1.Items.add(linha); // Copia a Linha do Arquivo txt for I := 0 to ListBox1.Items.Count - 1 do // Efetua a Leitura de Linha a Linha begin Coluna.Text := StringReplace(ListBox1.Items.Strings[I], ' ', #13, [rfReplaceAll]); // Carrega a Variável Coluna com os Itens e Valores da Linha end; DataHora := DataHora + copy(linha, 1, 19); // Copia a Data e Hora da Linha do Arquivo txt PressaoY := Coluna[2]; // Copia a Pressão da Linha do Arquivo txt VazaoY := Coluna[3]; // Copia a Vazão da Linha do Arquivo txt chart1.Series[1].AddXY(X, StrToFloat(PressaoY), FormatDateTime('DD'+'/'+'MM'+'/'+'YY'+' '+'HH'+':'+'NN'+':'+'SS', StrToDateTime(DataHora)),1); // Plota o Gráfico da Pressão chart1.Series[0].AddXY(X, StrToFloat(VazaoY), FormatDateTime('DD'+'/'+'MM'+'/'+'YY'+' '+'HH'+':'+'NN'+':'+'SS', StrToDateTime(DataHora)),1); // Plota o Gráfico da Vazão DataHora := ''; // Limpa a Variável DataHora PressaoY := ''; // Limpa a Variável PressaoY VazaoY := ''; // Limpa a Variável VazaoY Inc(X); // Incrementa o Eixo X do Gráfico Edit6.Text := MaiorVazao; // Mostra Maior Vazão Edit4.Text := MenorVazao; // Mostra Menor Vazão Edit3.Text := MaiorPressao; // Mostra Maior Pressão Edit1.Text := MenorPressao; // Mostra Menor Pressão end; Edit7.Text := 'Canal 1'; // Apresenta os Canais de Referências Edit8.Text := 'Canal 2'; Edit9.Text := 'Pressão'; // Apresenta a Variável de Engenharia como Pressão Edit10.Text := 'Vazão'; // Apresenta a Variável de Engenharia como Vazão Edit11.Text := 'mca'; // Apresenta a Unidade de Pressão Edit12.Text := F_Vazao.Label2.Caption; // Apresenta a Unidade de Vazão DataHoraTermino := DataHoraTermino + copy(linha, 1, 19); // Copia a Data e Hora do Final das Coletas na Linha do Arquivo txt Edit15.Text := FormatDateTime('DD'+'/'+'MM'+'/'+'YY'+' '+'HH'+':'+'NN'+':'+'SS', StrToDateTime(DataHoraInicio));// Mostra a Data e Hora Inicial das Coletas Edit16.Text := FormatDateTime('DD'+'/'+'MM'+'/'+'YY'+' '+'HH'+':'+'NN'+':'+'SS', StrToDateTime(DataHoraInicio));// Mostra a Data e Hora Inicial das Coletas Edit17.Text := FormatDateTime('DD'+'/'+'MM'+'/'+'YY'+' '+'HH'+':'+'NN'+':'+'SS', StrToDateTime(DataHoraTermino));// Mostra a Data e Hora Final das Coletas Edit18.Text := FormatDateTime('DD'+'/'+'MM'+'/'+'YY'+' '+'HH'+':'+'NN'+':'+'SS', StrToDateTime(DataHoraTermino));// Mostra a Data e Hora Final das Coletas ListBox1.Items.Text := StringReplace(ListBox1.Items.Text,' ',' ',[rfReplaceAll]); {************************************************************ Crie esta função para fazer o cálculo da pressão da vazão para outro cálculo basta implementar na função. ************************************************************} ShowMessage(SomaTotal()); // Destroi o array dinâmico FreeAndNil(Coluna); //Closefile(ArqTxt); // Fecha o Arquivo txt end; Closefile(ArqTxt); // Fecha o Arquivo txt //ListBox1.Items.Clear; // Limpa o ListBox1 end;
Responder
Clique aqui para fazer login e interagir na Comunidade :)