Eu tenho este galge programado neste codigo..porem ele não me da o resultado esperado real..ou seja, neste codigo eu tou lendo um arquivo *.csv e convertendo ele pra paradox...porem o gauge não ta correto..pois ele esta colocado da maneira que me da o resultado por registro...e eu gostaria que ele me retornasse o resultado por conversão geral, ou seja eu quero converter o csv pra db e gostaria que o Gauge mostrasse o real progresso da conversão....pois as vezes a conversão demora uns 5 minutos e é bom mostrar pro usuario o REAL.
Por favor Veja o codigo abaixo:
procedure TForm1.XiButton1Click(Sender: TObject);
Var
Txt: TextFile;
Entrada: String;
Linhas: Integer;
now_temp: TDateTime;//variavel contadora de tempo
begin
//CONTADOR DE TEMPO
now_temp:=now;//recebe tempo
tempo.caption:= '00:00:00';
//
gauge1.Progress:=30;
TABLE1.Active:=TRUE;
Assignfile(Txt,'c:\xxxxx\yyyy.csv');//caminho do arquivo CSV
Reset(Txt);
Linhas := 0;
While not Eoln(Txt) do
begin
gauge1.Progress:=50;
Readln(Txt,Entrada);
Inc(Linhas);
If Linhas > 3 then//aqui verifica e desconcidera AS 4 primeiras linhas do CSV
if (Copy(Entrada, 1, 1) = '3') then //AQUI CONSIDERA SOMENTE AS LINHAS QUE TEM O CAMPO 1 = 3
begin
gauge1.Progress:=80;
Table1.Insert; //Abaixo converte pra *.DB
//
Table1.FieldByName('1').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
Delete(Entrada, 1, Pos(PathSep, Entrada));
Table1.FieldByName('sigla_ctrc').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
Delete(Entrada, 1, Pos(PathSep, Entrada));
Table1.FieldByName('numero_ctrc').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
Delete(Entrada, 1, Pos(PathSep, Entrada));
Table1.FieldByName('ctrc/subcontr').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
Delete(Entrada, 1, Pos(PathSep, Entrada));
Table1.FieldByName('situacao_ctrc').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
Delete(Entrada, 1, Pos(PathSep, Entrada));
Table1.FieldByName('entr_cep').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
Delete(Entrada, 1, Pos(PathSep, Entrada));
Table1.FieldByName('entr_cidade').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
Delete(Entrada, 1, Pos(PathSep, Entrada));
Table1.FieldByName('entr_uf').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
Delete(Entrada, 1, Pos(PathSep, Entrada));
Table1.FieldByName('tabela_calculo').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
Delete(Entrada, 1, Pos(PathSep, Entrada));
Table1.FieldByName('desc_tabela').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
Delete(Entrada, 1, Pos(PathSep, Entrada));
Table1.FieldByName('frete_peso').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
Delete(Entrada, 1, Pos(PathSep, Entrada));
Table1.FieldByName('cod_vendedor').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
Delete(Entrada, 1, Pos(PathSep, Entrada));
//
{====ESTE CODIGO ABAIXO.....ALEM DE PROCESSAR
COMO OS DEMAIS ACIMA...ELE EVITA DE CAIR NO BANCO DE DADOS O PONTO E VIRGULA...POR ISTO
TERMINO A LEITURA COM ESTA LINHA ABAIXO.===}
Table1.FieldByName('nome_vendedor').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
Delete(Entrada, 1, Pos(PathSep, Entrada));
{===abaixo fecha o ultimo campo a ser convertido, EXCETO NOS CASOS
Table1.FieldByName('contador').Value := 1;
//
Table1.Post;
gauge1.Progress:=95;
end;
end;
gauge1.Progress:=96;
CloseFile(Txt);
//aqui abaixo conta os registros
gauge1.Progress:=97;
while not TABLE1.Eof do begin
Table1.Next;
gauge1.Progress:=98;
end;
Label2.Caption := IntToStr(Table1.RecordCount);
Table1.First;
Beep;
gauge1.Progress:=100;
Tempo.caption:=(FormatDateTime('hh:mm:ss',now-now_temp));//conta o tempo de conversão
Showmessage('Ok..Arquivo C:\xxxxx\yyyy.db criado com Sucesso E Já Processou o campo CONTADOR!');
end;
Note que o Gauge esta sendo processado a cada registro convertido, acho que é isto que não pode acontecer....
Neste caso, qual seria a idéia pra fazer rodar o progresso Real?
Pergunta
Eder
Ola..pessoal
Eu tenho este galge programado neste codigo..porem ele não me da o resultado esperado real..ou seja, neste codigo eu tou lendo um arquivo *.csv e convertendo ele pra paradox...porem o gauge não ta correto..pois ele esta colocado da maneira que me da o resultado por registro...e eu gostaria que ele me retornasse o resultado por conversão geral, ou seja eu quero converter o csv pra db e gostaria que o Gauge mostrasse o real progresso da conversão....pois as vezes a conversão demora uns 5 minutos e é bom mostrar pro usuario o REAL.
Por favor Veja o codigo abaixo:
Note que o Gauge esta sendo processado a cada registro convertido, acho que é isto que não pode acontecer....
Neste caso, qual seria a idéia pra fazer rodar o progresso Real?
muito Grato
Editado por MicheusLink para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
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.