[firebase-br] Leitura de arquivo texto
Auriston Lopes
auriston.firebird em yahoo.com.br
Qui Fev 14 16:59:37 -03 2008
Quando efetuo uma leitura de um arquivo texto para gravar o banco de dados esta dando a mensagem OUT OF MEMORY, eu uso a rotina abaixo:
AssignFile(Nomearquivo, OpenDialog1.FileName);
Screen.Cursor := crSQLWait;
ProgressBar1.Min := 0;
ProgressBar1.Max := Tilinha;
Reset(Nomearquivo);
dm.qrytemp.DisableControls;
while not Eoln(Nomearquivo) do
begin
Form1.Caption := Copy(Entrada,1,126);
inc(ilinha);
Readln(Nomearquivo,Entrada);
if Copy(Entrada,1,2) <> '90' then
Begin
dm.qrytemp.Insert;
dm.qrytemp.FieldByname('MAQUINA').Value := 0;
dm.qrytemp.FieldByName('linha').AsString := Copy(Entrada,1,126);
if Copy(Entrada,1,2) = '50' then
Begin
dm.qrytemp.FieldByname('CNPJ').Asstring := Copy(Entrada,3,14);
dm.qrytemp.FieldByname('NOTA').Asstring := Copy(Entrada,46,6);
End;
if Copy(Entrada,1,2) = '53' then
Begin
dm.qrytemp.FieldByname('CNPJ').Asstring := Copy(Entrada,3,14);
dm.qrytemp.FieldByname('NOTA').Asstring := Copy(Entrada,46,6);
End;
if Copy(Entrada,1,2) = '54' then
Begin
dm.qrytemp.FieldByname('CNPJ').Asstring := Copy(Entrada,3,14);
dm.qrytemp.FieldByname('NOTA').Asstring := Copy(Entrada,22,6);
dm.qrytemp.FieldByname('produto').Asstring := Copy(Entrada,38,14);
dm.qrytemp.FieldByName('ITEM').AsString := Copy(Entrada,35,3);
End;
if Copy(Entrada,1,2) = '75' then
dm.qrytemp.FieldByName('Produto').AsString := Copy(Entrada,19,14);
dm.qrytemp.Post;
End;
// ProgressBar1.Position := iLinha;
End;
dm.qrytemp.EnableControls;
Preciso de um ajuda para otimizar o codigo acima para que ele fique mais leve.
Uso D7 + IBX + FIREBIRD 1.5
sds
Auriston
---------------------------------
Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento!
Mais detalhes sobre a lista de discussão lista