Re: Res: [delphi-br] Leitura de arquivo texto

2008-02-15 Por tôpico Willian Leal
Como disse o nosso amigo Rubem, usa StringList, é bem mais rápido e prático.

Em 14/02/08, Rubem Nascimento da Rocha [EMAIL PROTECTED] escreveu:


 Duas coisas:

 1) Carrega o texto todo em um TStringList e navega nele, ao invés de
 navegar fazendo esse lance de abrir/percorrer/fechar. Daí, percorre só o
 TStringList. Fica mais rápido.

 2) Não faz esse lance de post! Vai comer mais memória mesmo, pq as
 atualizações vão ficar todas na estação. O ideal mesmo é abrir uma
 transação, emitir explicitamente os INSERTs/DELETEs/UPDATEs no banco e
 depois, comitar ou cancelar a transação caso esta dê problema.

 Com isso tudo, vai ficar uma bala!

 Sds.

 

 To: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br
 From: [EMAIL PROTECTED] gyncowboy%40yahoo.com.br
 Date: Thu, 14 Feb 2008 11:27:06 -0800
 Subject: Res: [delphi-br] Leitura de arquivo texto

 O que vc pode fazer é a cada 50 registros por exemplo gravar o arquivo
 fisicamente no banco e continuar exportando.

 Sempre que gravar os arquivos fisicamente feche e abra a tabela de novo,
 mas sem registros ...
 - Mensagem original 
 De: auriston.delphi [EMAIL PROTECTED]auriston.delphi%40yahoo.com.br
 
 Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br
 Enviadas: Quinta-feira, 14 de Fevereiro de 2008 15:51:32
 Assunto: [delphi-br] Leitura de arquivo texto

 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(Nomearqu ivo, OpenDialog1. FileName) ;

 Screen.Cursor := crSQLWait;

 ProgressBar1. Min := 0;

 ProgressBar1. Max := Tilinha;

 Reset(Nomearquivo) ;

 dm.qrytemp.DisableC ontrols;

 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.FieldByn ame('MAQUINA' ).Value := 0;

 dm.qrytemp.FieldByN ame('linha' ).AsString := Copy

 (Entrada,1,126) ;

 if Copy(Entrada, 1,2) = '50' then

 Begin

 dm.qrytemp.FieldByn ame

 ('CNPJ').Asstring := Copy(Entrada, 3,14);

 dm.qrytemp.FieldByn ame

 ('NOTA').Asstring := Copy(Entrada, 46,6);

 End;

 if Copy(Entrada, 1,2) = '53' then

 Begin

 dm.qrytemp.FieldByn ame

 ('CNPJ').Asstring := Copy(Entrada, 3,14);

 dm.qrytemp.FieldByn ame

 ('NOTA').Asstring := Copy(Entrada, 46,6);

 End;

 if Copy(Entrada, 1,2) = '54' then

 Begin

 dm.qrytemp.FieldByn ame

 ('CNPJ').Asstring := Copy(Entrada, 3,14);

 dm.qrytemp.FieldByn ame

 ('NOTA').Asstring := Copy(Entrada, 22,6);

 dm.qrytemp.FieldByn ame

 ('produto'). Asstring := Copy(Entrada, 38,14);

 dm.qrytemp.FieldByN ame

 ('ITEM').AsString := Copy(Entrada, 35,3);

 End;

 if Copy(Entrada, 1,2) = '75' then

 dm.qrytemp.FieldByN ame

 ('Produto'). AsString := Copy(Entrada, 19,14);

 dm.qrytemp.Post;

 End;

 // ProgressBar1. Position := iLinha;

 End;

 dm.qrytemp.EnableCo ntrols;

 Precsisode 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!
 http://br.mail.yahoo.com/

 [As partes desta mensagem que não continham texto foram removidas]

 __
 Conheça o Windows Live Spaces, a rede de relacionamentos do Messenger!
 http://www.amigosdomessenger.com.br/

 




-- 
Willian Leal
Desenvolvedor de Softwares
MSN: [EMAIL PROTECTED]
Celular:(32) 8409 - 3077


[As partes desta mensagem que não continham texto foram removidas]



[delphi-br] Leitura de arquivo texto

2008-02-14 Por tôpico auriston.delphi
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;
Precsisode um ajuda para otimizar o codigo acima para que ele fique 
mais leve.
Uso D7 + IBX + FIREBIRD 1.5
sds
Auriston



Res: [delphi-br] Leitura de arquivo texto

2008-02-14 Por tôpico Andre Luis Silveria
O que vc pode fazer é a cada 50 registros por exemplo gravar o arquivo 
fisicamente no banco e continuar exportando.

Sempre que gravar os arquivos fisicamente feche e abra a tabela de novo, mas 
sem registros ...
- Mensagem original 
De: auriston.delphi [EMAIL PROTECTED]
Para: delphi-br@yahoogrupos.com.br
Enviadas: Quinta-feira, 14 de Fevereiro de 2008 15:51:32
Assunto: [delphi-br] Leitura de arquivo texto









  



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(Nomearqu ivo, OpenDialog1. FileName) ;

 Screen.Cursor := crSQLWait;

 ProgressBar1. Min := 0;

 ProgressBar1. Max := Tilinha;

 Reset(Nomearquivo) ;

 dm.qrytemp.DisableC ontrols;

 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.FieldByn ame('MAQUINA' ).Value  := 0;

 dm.qrytemp.FieldByN ame('linha' ).AsString := Copy

(Entrada,1,126) ;

 if Copy(Entrada, 1,2) = '50' then

Begin

   dm.qrytemp.FieldByn ame

('CNPJ').Asstring := Copy(Entrada, 3,14);

   dm.qrytemp.FieldByn ame

('NOTA').Asstring := Copy(Entrada, 46,6);

End;

 if Copy(Entrada, 1,2) = '53' then

Begin

   dm.qrytemp.FieldByn ame

('CNPJ').Asstring := Copy(Entrada, 3,14);

   dm.qrytemp.FieldByn ame

('NOTA').Asstring := Copy(Entrada, 46,6);

End;

 if Copy(Entrada, 1,2) = '54' then

Begin

   dm.qrytemp.FieldByn ame

('CNPJ').Asstring:= Copy(Entrada, 3,14);

   dm.qrytemp.FieldByn ame

('NOTA').Asstring:= Copy(Entrada, 22,6);

   dm.qrytemp.FieldByn ame

('produto'). Asstring := Copy(Entrada, 38,14);

   dm.qrytemp.FieldByN ame

('ITEM').AsString:= Copy(Entrada, 35,3);

End;

 if Copy(Entrada, 1,2) = '75' then

dm.qrytemp.FieldByN ame

('Produto'). AsString := Copy(Entrada, 19,14);

 dm.qrytemp.Post;

  End;

//   ProgressBar1. Position := iLinha;

End;

  dm.qrytemp.EnableCo ntrols;

Precsisode um ajuda para otimizar o codigo acima para que ele fique 

mais leve.

Uso D7 + IBX + FIREBIRD 1.5

sds

Auriston






  







!--

#ygrp-mkp{
border:1px solid #d8d8d8;font-family:Arial;margin:14px 0px;padding:0px 14px;}
#ygrp-mkp hr{
border:1px solid #d8d8d8;}
#ygrp-mkp #hd{
color:#628c2a;font-size:85%;font-weight:bold;line-height:122%;margin:10px 0px;}
#ygrp-mkp #ads{
margin-bottom:10px;}
#ygrp-mkp .ad{
padding:0 0;}
#ygrp-mkp .ad a{
color:#ff;text-decoration:none;}
--



!--

#ygrp-sponsor #ygrp-lc{
font-family:Arial;}
#ygrp-sponsor #ygrp-lc #hd{
margin:10px 0px;font-weight:bold;font-size:78%;line-height:122%;}
#ygrp-sponsor #ygrp-lc .ad{
margin-bottom:10px;padding:0 0;}
--



!--

#ygrp-mlmsg {font-size:13px;font-family:arial, helvetica, clean, sans-serif;}
#ygrp-mlmsg table {font-size:inherit;font:100%;}
#ygrp-mlmsg select, input, textarea {font:99% arial, helvetica, clean, 
sans-serif;}
#ygrp-mlmsg pre, code {font:115% monospace;}
#ygrp-mlmsg * {line-height:1.22em;}
#ygrp-text{
font-family:Georgia;
}
#ygrp-text p{
margin:0 0 1em 0;}
#ygrp-tpmsgs{
font-family:Arial;
clear:both;}
#ygrp-vitnav{
padding-top:10px;font-family:Verdana;font-size:77%;margin:0;}
#ygrp-vitnav a{
padding:0 1px;}
#ygrp-actbar{
clear:both;margin:25px 0;white-space:nowrap;color:#666;text-align:right;}
#ygrp-actbar .left{
float:left;white-space:nowrap;}
.bld{font-weight:bold;}
#ygrp-grft{
font-family:Verdana;font-size:77%;padding:15px 0;}
#ygrp-ft{
font-family:verdana;font-size:77%;border-top:1px solid #666;
padding:5px 0;
}
#ygrp-mlmsg #logo{
padding-bottom:10px;}

#ygrp-vital{
background-color:#e0ecee;margin-bottom:20px;padding:2px 0 8px 8px;}
#ygrp-vital #vithd{
font-size:77%;font-family:Verdana;font-weight:bold;color:#333;text-transform:uppercase;}
#ygrp-vital ul{
padding:0;margin:2px 0;}
#ygrp-vital ul li{
list-style-type:none;clear:both;border:1px solid #e0ecee;
}
#ygrp-vital ul li .ct{
font-weight:bold;color:#ff7900;float:right;width:2em;text-align:right;padding-right:.5em;}
#ygrp-vital ul li .cat{
font-weight:bold;}
#ygrp-vital a{
text-decoration:none;}

#ygrp-vital a:hover{
text-decoration:underline;}

#ygrp-sponsor #hd{
color:#999;font-size:77%;}
#ygrp-sponsor #ov{
padding:6px 13px;background

RE: Res: [delphi-br] Leitura de arquivo texto

2008-02-14 Por tôpico Rubem Nascimento da Rocha

Duas coisas:

1) Carrega o texto todo em um TStringList e navega nele, ao invés de navegar 
fazendo esse lance de abrir/percorrer/fechar. Daí, percorre só o TStringList. 
Fica mais rápido.

2) Não faz esse lance de post! Vai comer mais memória mesmo, pq as atualizações 
vão ficar todas na estação. O ideal mesmo é abrir uma transação, emitir 
explicitamente os INSERTs/DELETEs/UPDATEs no banco e depois, comitar ou 
cancelar a transação caso esta dê problema.

Com isso tudo, vai ficar uma bala!

Sds.




To: delphi-br@yahoogrupos.com.br
From: [EMAIL PROTECTED]
Date: Thu, 14 Feb 2008 11:27:06 -0800
Subject: Res: [delphi-br] Leitura de arquivo texto







O que vc pode fazer é a cada 50 registros por exemplo gravar o arquivo 
fisicamente no banco e continuar exportando.

Sempre que gravar os arquivos fisicamente feche e abra a tabela de novo, mas 
sem registros ...
- Mensagem original 
De: auriston.delphi [EMAIL PROTECTED]
Para: delphi-br@yahoogrupos.com.br
Enviadas: Quinta-feira, 14 de Fevereiro de 2008 15:51:32
Assunto: [delphi-br] Leitura de arquivo texto

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(Nomearqu ivo, OpenDialog1. FileName) ;

Screen.Cursor := crSQLWait;

ProgressBar1. Min := 0;

ProgressBar1. Max := Tilinha;

Reset(Nomearquivo) ;

dm.qrytemp.DisableC ontrols;

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.FieldByn ame('MAQUINA' ).Value := 0;

dm.qrytemp.FieldByN ame('linha' ).AsString := Copy

(Entrada,1,126) ;

if Copy(Entrada, 1,2) = '50' then

Begin

dm.qrytemp.FieldByn ame

('CNPJ').Asstring := Copy(Entrada, 3,14);

dm.qrytemp.FieldByn ame

('NOTA').Asstring := Copy(Entrada, 46,6);

End;

if Copy(Entrada, 1,2) = '53' then

Begin

dm.qrytemp.FieldByn ame

('CNPJ').Asstring := Copy(Entrada, 3,14);

dm.qrytemp.FieldByn ame

('NOTA').Asstring := Copy(Entrada, 46,6);

End;

if Copy(Entrada, 1,2) = '54' then

Begin

dm.qrytemp.FieldByn ame

('CNPJ').Asstring := Copy(Entrada, 3,14);

dm.qrytemp.FieldByn ame

('NOTA').Asstring := Copy(Entrada, 22,6);

dm.qrytemp.FieldByn ame

('produto'). Asstring := Copy(Entrada, 38,14);

dm.qrytemp.FieldByN ame

('ITEM').AsString := Copy(Entrada, 35,3);

End;

if Copy(Entrada, 1,2) = '75' then

dm.qrytemp.FieldByN ame

('Produto'). AsString := Copy(Entrada, 19,14);

dm.qrytemp.Post;

End;

// ProgressBar1. Position := iLinha;

End;

dm.qrytemp.EnableCo ntrols;

Precsisode 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!
http://br.mail.yahoo.com/

[As partes desta mensagem que não continham texto foram removidas]









_
Conheça o Windows Live Spaces, a rede de relacionamentos do Messenger!
http://www.amigosdomessenger.com.br/

[delphi-br] Leitura de arquivo texto

2004-09-13 Por tôpico Eduardo Silva ®
Galera, tenho a seguinte situação:

Preciso ler um arquivo texto e jogar cada campo em um local específico
(edits por exemplo).

O problema é que esse arquivo texto terá formatações diferentes e não terá
uma forma padrão, poois o arquivo será enviado para mim de

diversos locais (pessoas) diferentes e cada um terá uma formatação diferente
mas os campos iguais, por exemplo:

Um arquivo pode vir assim:

Eduardo Silva  Rua Xv de novembro, 1256Centro
18680-000   Lençóis Pasulita
Marcio José dos SantosAv Brasil, n.º 852 Vila Capoani
18680-000   Lençóis Paulista
Renata CeribeliRua das Gaivotas, 963  Jardim Cidade
Nova   18680-000   Lençóis Paulista

Outro pode vir assim:



 _  __  _
/ )|  |( \
   / / | Eduardo de Almeida Silva | \ \
 _( (_ |  _  * [EMAIL PROTECTED]   _  | _) )_
(((\ \)|_/ )__( \_|(/ /)))

( \_/ /\ \_/ )

 \   /  \   /

  \_/\_/

  /   /\   \


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.749 / Virus Database: 501 - Release Date: 01/09/2004


[As partes desta mensagem que não continham texto foram removidas]



-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html

 



Re: [delphi-br] Leitura de arquivo texto

2004-09-13 Por tôpico Nielsen Cassiano Simões
Seria mais fácil você definir o padrão CVS, onde os campos são
separados por , ou por ;, ou utilizar TAB como separador de
campos, senão você vai se perder.

Definido isso, você pode utilizar a função Pos(Separador, Linha) e
Copy(Linha, Posição_Inicial, Tamanho) para remover campo a campo.

Nielsen


On Mon, 13 Sep 2004 11:14:22 -0300, Eduardo Silva ®
[EMAIL PROTECTED] wrote:
 Galera, tenho a seguinte situação:
 
 Preciso ler um arquivo texto e jogar cada campo em um local específico
 (edits por exemplo).
 
 O problema é que esse arquivo texto terá formatações diferentes e não terá
 uma forma padrão, poois o arquivo será enviado para mim de
 
 diversos locais (pessoas) diferentes e cada um terá uma formatação diferente
 mas os campos iguais, por exemplo:
 
 Um arquivo pode vir assim:
 
 Eduardo Silva  Rua Xv de novembro, 1256Centro
 18680-000   Lençóis Pasulita
 Marcio José dos SantosAv Brasil, n.º 852 Vila Capoani
 18680-000   Lençóis Paulista
 Renata CeribeliRua das Gaivotas, 963  Jardim Cidade
 Nova   18680-000   Lençóis Paulista
 
 Outro pode vir assim:
 
 _  __  _
/ )|  |( \
   / / | Eduardo de Almeida Silva | \ \
 _( (_ |  _  * [EMAIL PROTECTED]   _  | _) )_
 (((\ \)|_/ )__( \_|(/ /)))
 
 ( \_/ /\ \_/ )
 
 \   /  \   /
 
  \_/\_/
 
  /   /\   \
 
 ---
 Outgoing mail is certified Virus Free.
 Checked by AVG anti-virus system (http://www.grisoft.com).
 Version: 6.0.749 / Virus Database: 501 - Release Date: 01/09/2004
 
 [As partes desta mensagem que não continham texto foram removidas]
 
 --
  FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 
 
 Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages
 
 Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
 Links do Yahoo! Grupos
 
 
 
 



-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html