[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