Re: [delphi-br] função findfirst

2010-04-10 Por tôpico Ricardo Augusto
Na verdade, a API FindFirst não garante nem que os arquivos voltarão na
ordem em que foram gravados, provavelmente pq a tabela de alocação de
arquivos pode ter suas entradas alterada por vários fatores, como
desfragmentações e otimizações de prefecth.

Então, assim como uma consulta SQL sem ORDER BY, o melhor é não assumir
ordem nenhuma.

Em 9 de abril de 2010 15:57, Alexandre alexandre.pedr...@gmail.comescreveu:

 boa tarde,

 não sei se é isso que você quis dizer, mas...

 a ordem que o FindFirst tras os arquivos é a ordem em que foram gravados no
 diretório. Para ordenar, grave os arquivos num stringlist e use a
 propriedade de ordenação do mesmo.

 Depois faça o loop no StringList e obterá o resultado desejado.

 Alexandre

 Em 8 de abril de 2010 08:16, Ralp Alves Bezerra ral...@gmail.com
 escreveu:

 
 
  Bom dia nobres colegas.
 
  Estou utilizando esta rotina para pegar as imagens de uma pasta e salvar
 no
  banco firebird.
 
  if FindFirst('C:\G2DOC\G2Imagem\*.jpg', faAnyFile, Arq) = 0 then
 
  begin
 
  repeat
 
  DM.cds_TCM_A.Insert;
 
  dbiImagem.LoadFromFile('C:\G2DOC\G2Imagem\'+Arq.Name);
 
  //Incrementa número da página
 
  Inc(Pag);
 
  //Grava Número da página
 
  DM.cds_TCM_APAGINA.Text :=IntToStr(Pag);
 
  //Grava nome do arquivo
 
  DM.cds_TCM_ANOME_ARQUIVO.Text
  :=frmDigitalizaTCM.Label13.Caption+IntToStr(Pag)+'.jpg';
 
  //Grava Caminho do Arquivo
 
  DM.cds_TCM_ACAMINHO.Text :=Dir;
 
  //Grava sigla do documento
 
  DM.cds_TCM_ASIGLA_DOCUMENTO.Text
  :=DM.cds_TCMSIGLA_DOCUMENTO.Text;
 
  //Grava Codigo entidade
 
  DM.cds_TCM_ACODIGO_ENTIDADE.Text
  :=DM.cds_TCMCODIGO_ENTIDADE.Text;
 
  //Grava Cod. Unid. Administrativa
 
 
 
 DM.cds_TCM_ACOD_UNID_ADMINISTRATIVA.Text:=DM.cds_TCMCOD_UNID_ADMINISTRATIVA.
  Text;
 
  //Grava Exercicio
 
  DM.cds_TCM_AEXERCICIO.Text :=DM.cds_TCMEXERCICIO.Text;
 
  //Grava Unidade Gestora
 
  DM.cds_TCM_AUNIDADE_GESTORA.Text
  :=DM.cds_TCMUNIDADE_GESTORA.Text;
 
  //Grava Nome Documento
 
  DM.cds_TCM_ANOME_DOCUMENTO.Text
  :=DM.cds_TCMNOME_DOCUMENTO.Text;
 
  //Informa se arquivo foi digitalizado
 
  DM.cds_TCM_ADIGITAL.Text :='1';
 
  //Informa o anexo do demonstrativo
 
  DM.cds_TCM_AANEXOS.Text
  :=frmDigitalizaTCM.DBText5.Caption;
 
  DM.cds_TCM_A.Post;
 
  DM.cds_TCM_A.ApplyUpdates(0)
 
  until FindNext(Arq)  0;
 
  FindClose(Arq);
 
  end;
 
  Porém, quando vou verificar a seqüência da pasta com a importação dos
  arquivos no banco firebird, noto que alguns arquivos saem da ordem
 correta.
 
  Será que a rotina acima está correta? Alguém poderia me dar uma dica?
 
  Estou utilizando Firebird 2.1 e Delphi 7.
 
  Abraços.
 
  Ralp Alves
 
  [As partes desta mensagem que não continham texto foram removidas]
 
 
 


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



 

 --
  FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 






-- 
_
Ricardo Augusto


Muitos dos problemas do mundo devem-se ao fato de que os ignorantes estão
completamente seguros e os inteligentes cheios de dúvidas (Bertrand Russel)


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



[delphi-br] função findfirst

2010-04-09 Por tôpico Ralp Alves Bezerra
Bom dia nobres colegas.

 

Estou utilizando esta rotina para pegar as imagens de uma pasta e salvar no
banco firebird.

 

  if FindFirst('C:\G2DOC\G2Imagem\*.jpg', faAnyFile, Arq) = 0 then

  begin

repeat

DM.cds_TCM_A.Insert;

dbiImagem.LoadFromFile('C:\G2DOC\G2Imagem\'+Arq.Name);

//Incrementa número da página

Inc(Pag);

//Grava Número da página

DM.cds_TCM_APAGINA.Text :=IntToStr(Pag);

//Grava nome do arquivo

DM.cds_TCM_ANOME_ARQUIVO.Text
:=frmDigitalizaTCM.Label13.Caption+IntToStr(Pag)+'.jpg';

//Grava Caminho do Arquivo

DM.cds_TCM_ACAMINHO.Text:=Dir;

//Grava sigla do documento

DM.cds_TCM_ASIGLA_DOCUMENTO.Text
:=DM.cds_TCMSIGLA_DOCUMENTO.Text;

//Grava Codigo entidade

DM.cds_TCM_ACODIGO_ENTIDADE.Text
:=DM.cds_TCMCODIGO_ENTIDADE.Text;

//Grava Cod. Unid. Administrativa

 
DM.cds_TCM_ACOD_UNID_ADMINISTRATIVA.Text:=DM.cds_TCMCOD_UNID_ADMINISTRATIVA.
Text;

//Grava Exercicio

DM.cds_TCM_AEXERCICIO.Text  :=DM.cds_TCMEXERCICIO.Text;

//Grava Unidade Gestora

DM.cds_TCM_AUNIDADE_GESTORA.Text
:=DM.cds_TCMUNIDADE_GESTORA.Text;

//Grava Nome Documento

DM.cds_TCM_ANOME_DOCUMENTO.Text
:=DM.cds_TCMNOME_DOCUMENTO.Text;

//Informa se arquivo foi digitalizado

DM.cds_TCM_ADIGITAL.Text:='1';

//Informa o anexo do demonstrativo

DM.cds_TCM_AANEXOS.Text
:=frmDigitalizaTCM.DBText5.Caption;

DM.cds_TCM_A.Post;

DM.cds_TCM_A.ApplyUpdates(0)

until FindNext(Arq)  0;

  FindClose(Arq);

  end;

 

Porém, quando vou verificar a seqüência da pasta com a importação dos
arquivos no banco firebird, noto que alguns arquivos saem da ordem correta.

 

Será que a rotina acima está correta? Alguém poderia me dar uma dica?

 

Estou utilizando Firebird 2.1 e Delphi 7.

 

Abraços.

 

Ralp Alves

 

 



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



Re: [delphi-br] função findfirst

2010-04-09 Por tôpico Ricardo Augusto
Os comandos FindFirst/FindNext não trazem os arquivos em nenhuma ordem
específica.

Se vc quer ordená-los por nome, carregue os nomes em uma StringList, chame o
método Sort e depois processe cada um dos itens da lista (caso a ordenação
seja por nome de arquivo).

Em 8 de abril de 2010 08:16, Ralp Alves Bezerra ral...@gmail.com escreveu:



 Bom dia nobres colegas.

 Estou utilizando esta rotina para pegar as imagens de uma pasta e salvar no
 banco firebird.

 if FindFirst('C:\G2DOC\G2Imagem\*.jpg', faAnyFile, Arq) = 0 then

 begin

 repeat

 DM.cds_TCM_A.Insert;

 dbiImagem.LoadFromFile('C:\G2DOC\G2Imagem\'+Arq.Name);

 //Incrementa número da página

 Inc(Pag);

 //Grava Número da página

 DM.cds_TCM_APAGINA.Text :=IntToStr(Pag);

 //Grava nome do arquivo

 DM.cds_TCM_ANOME_ARQUIVO.Text
 :=frmDigitalizaTCM.Label13.Caption+IntToStr(Pag)+'.jpg';

 //Grava Caminho do Arquivo

 DM.cds_TCM_ACAMINHO.Text :=Dir;

 //Grava sigla do documento

 DM.cds_TCM_ASIGLA_DOCUMENTO.Text
 :=DM.cds_TCMSIGLA_DOCUMENTO.Text;

 //Grava Codigo entidade

 DM.cds_TCM_ACODIGO_ENTIDADE.Text
 :=DM.cds_TCMCODIGO_ENTIDADE.Text;

 //Grava Cod. Unid. Administrativa


 DM.cds_TCM_ACOD_UNID_ADMINISTRATIVA.Text:=DM.cds_TCMCOD_UNID_ADMINISTRATIVA.
 Text;

 //Grava Exercicio

 DM.cds_TCM_AEXERCICIO.Text :=DM.cds_TCMEXERCICIO.Text;

 //Grava Unidade Gestora

 DM.cds_TCM_AUNIDADE_GESTORA.Text
 :=DM.cds_TCMUNIDADE_GESTORA.Text;

 //Grava Nome Documento

 DM.cds_TCM_ANOME_DOCUMENTO.Text
 :=DM.cds_TCMNOME_DOCUMENTO.Text;

 //Informa se arquivo foi digitalizado

 DM.cds_TCM_ADIGITAL.Text :='1';

 //Informa o anexo do demonstrativo

 DM.cds_TCM_AANEXOS.Text
 :=frmDigitalizaTCM.DBText5.Caption;

 DM.cds_TCM_A.Post;

 DM.cds_TCM_A.ApplyUpdates(0)

 until FindNext(Arq)  0;

 FindClose(Arq);

 end;

 Porém, quando vou verificar a seqüência da pasta com a importação dos
 arquivos no banco firebird, noto que alguns arquivos saem da ordem correta.

 Será que a rotina acima está correta? Alguém poderia me dar uma dica?

 Estou utilizando Firebird 2.1 e Delphi 7.

 Abraços.

 Ralp Alves

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

  




-- 
_
Ricardo Augusto


Muitos dos problemas do mundo devem-se ao fato de que os ignorantes estão
completamente seguros e os inteligentes cheios de dúvidas (Bertrand Russel)


[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:
delphi-br-ow...@yahoogrupos.com.br
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:
delphi-br-unsubscr...@yahoogrupos.com.br

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




Re: [delphi-br] função findfirst

2010-04-09 Por tôpico Alexandre
boa tarde,

não sei se é isso que você quis dizer, mas...

a ordem que o FindFirst tras os arquivos é a ordem em que foram gravados no
diretório. Para ordenar, grave os arquivos num stringlist e use a
propriedade de ordenação do mesmo.

Depois faça o loop no StringList e obterá o resultado desejado.

Alexandre

Em 8 de abril de 2010 08:16, Ralp Alves Bezerra ral...@gmail.com escreveu:



 Bom dia nobres colegas.

 Estou utilizando esta rotina para pegar as imagens de uma pasta e salvar no
 banco firebird.

 if FindFirst('C:\G2DOC\G2Imagem\*.jpg', faAnyFile, Arq) = 0 then

 begin

 repeat

 DM.cds_TCM_A.Insert;

 dbiImagem.LoadFromFile('C:\G2DOC\G2Imagem\'+Arq.Name);

 //Incrementa número da página

 Inc(Pag);

 //Grava Número da página

 DM.cds_TCM_APAGINA.Text :=IntToStr(Pag);

 //Grava nome do arquivo

 DM.cds_TCM_ANOME_ARQUIVO.Text
 :=frmDigitalizaTCM.Label13.Caption+IntToStr(Pag)+'.jpg';

 //Grava Caminho do Arquivo

 DM.cds_TCM_ACAMINHO.Text :=Dir;

 //Grava sigla do documento

 DM.cds_TCM_ASIGLA_DOCUMENTO.Text
 :=DM.cds_TCMSIGLA_DOCUMENTO.Text;

 //Grava Codigo entidade

 DM.cds_TCM_ACODIGO_ENTIDADE.Text
 :=DM.cds_TCMCODIGO_ENTIDADE.Text;

 //Grava Cod. Unid. Administrativa


 DM.cds_TCM_ACOD_UNID_ADMINISTRATIVA.Text:=DM.cds_TCMCOD_UNID_ADMINISTRATIVA.
 Text;

 //Grava Exercicio

 DM.cds_TCM_AEXERCICIO.Text :=DM.cds_TCMEXERCICIO.Text;

 //Grava Unidade Gestora

 DM.cds_TCM_AUNIDADE_GESTORA.Text
 :=DM.cds_TCMUNIDADE_GESTORA.Text;

 //Grava Nome Documento

 DM.cds_TCM_ANOME_DOCUMENTO.Text
 :=DM.cds_TCMNOME_DOCUMENTO.Text;

 //Informa se arquivo foi digitalizado

 DM.cds_TCM_ADIGITAL.Text :='1';

 //Informa o anexo do demonstrativo

 DM.cds_TCM_AANEXOS.Text
 :=frmDigitalizaTCM.DBText5.Caption;

 DM.cds_TCM_A.Post;

 DM.cds_TCM_A.ApplyUpdates(0)

 until FindNext(Arq)  0;

 FindClose(Arq);

 end;

 Porém, quando vou verificar a seqüência da pasta com a importação dos
 arquivos no banco firebird, noto que alguns arquivos saem da ordem correta.

 Será que a rotina acima está correta? Alguém poderia me dar uma dica?

 Estou utilizando Firebird 2.1 e Delphi 7.

 Abraços.

 Ralp Alves

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

  



[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:
delphi-br-ow...@yahoogrupos.com.br
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:
delphi-br-unsubscr...@yahoogrupos.com.br

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