Fórum Memória #285628

21/06/2005

0

Estou importando um arquivo texto com 15000 registros.
Quando executo a função para iniciar a cópia tudo ocorre bem,
mas não consigo cancelar, o programa não responde mais, não consigo
fechar o formulário e nem acessar o botão para cancelar.
Parece que ocupa toda a memória, mas outros aplicativos funcionam,
alguém pode me ajudar? :shock: :shock:


Demetrius

Demetrius

Responder

Posts

21/06/2005

Lperosa

Põe dentro do while que vc está lindo o arquivo Application.ProcessMessages.

Certifique-se que vc está lendo o arquivo dentro de um while not eof(TXT), caso contrário poderá ficar em looping.


Responder

Gostei + 0

22/06/2005

Demetrius

Estou usando a seguinte codificação.
Você pode verificar para ver se está correto?

procedure TFImportaABCFarma.ImportaTXT;
var F1: textfile;
S1: String;
begin
AssignFile(F1,EPathArquivo.Text);
filemode := 0;
reset(f1);
while not eof(F1) do
begin
readln(f1,s1);
AdicionaCodigo;
DM2.CDSImportaABCFarma.FieldByName (´CODIGO_MEDICAMENTO´).AsString := copy(S1,01,09);
DM2.CDSImportaABCFarma.FieldByName(´CODIGO_CONTROLE´).AsString := copy(S1,10,10);
DM2.CDSImportaABCFarma.FieldByName(´CODIGO_LABORATORIO´).AsString := copy(S1,11,16);
DM2.CDSImportaABCFarma.FieldByName(´NOME_LABORATORIO´).AsString := copy(S1,17,46);
DM2.CDSImportaABCFarma.FieldByName(´DESCRICAO_MEDICAMENTO´).AsString := copy(S1,47,91);
DM2.CDSImportaABCFarma.FieldByName(´APRESENTACAO_MEDICAMENTO´).AsString := copy(S1,92,136);
DM2.CDSImportaABCFarma.FieldByName(´PRECO_LABORATORIO´).AsString := copy(S1,137,147);
DM2.CDSImportaABCFarma.FieldByName(´PRECO_MAXIMO_VENDA´).AsString := copy(S1,148,158);
DM2.CDSImportaABCFarma.FieldByName(´PRECO_FRACAO´).AsString := copy(S1,159,169);
DM2.CDSImportaABCFarma.FieldByName(´UNIDADE_VENDA´).AsString := copy(S1,170,172);
DM2.CDSImportaABCFarma.FieldByName(´PORCENTAGEM_IPI´).AsString := copy(S1,173,177);
DM2.CDSImportaABCFarma.FieldByName(´DATA_VIGENCIA´).AsString := copy(S1,178,185);
DM2.CDSImportaABCFarma.FieldByName(´PRODUTO_NOVO_VELHO´).AsString := copy(S1,186,186);
DM2.CDSImportaABCFarma.FieldByName(´CODIGO_BARRAS´).AsString := copy(S1,187,199);
DM2.CDSImportaABCFarma.FieldByName(´MEDICAMENTO_GENERICO´).AsString := copy(S1,200,202);
DM2.CDSImportaABCFarma.FieldByName(´MEDICAMENTO_NEGATIVO_POSITIVO´).AsString := copy(S1,203,205);
DM2.CDSImportaABCFarma.FieldByName(´MEDICAMENTO_NEUTRO´).AsString := copy(S1,206,208);
DM2.CDSImportaABCFarma.FieldByName(´PRINCIPIO_ATIVO´).AsString := copy(S1,209,338);
Application.ProcessMessages;
AtivaProgressBar;
DBGImportaABCFarma.Update;
end;
closefile(f1);
end;


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar