Re: [delphi-br] função findfirst
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
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
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
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