Ir para conteúdo
Fórum Script Brasil
  • 0

[Resolvido] Exclusão de vários arquivos de uma só vez


paulobergo

Pergunta

Oi Pessoal...

Há algum tempo encontrei uma dica para exclusão de vários arquivos e até pastas acho que aqui mesmo no fórum e vinha usando a rotina - sem problemas.

Agora, ao colocá-la num programa de captura de imagens, em um XP Home, ela tema em não funcionar em alguns casos...

Criei uma função para excluir os arquivos referenciados em uma string que contém a pasta e a extensão dos arquivos a serem excluídos:

Function Pasta2Del(sPasta2Del: String; bPastaFica: Boolean): Boolean;
Var
  FileStru: TshFileOpStruct;
  bExclusao: Boolean;
  lpPasta: LPSTR;
Begin
  lpPasta := PChar(sPasta2Del);
  bExclusao := False;
  FillChar(FileStru, SizeOf(FileStru), 0);
  FileStru.wFunc := FO_DELETE;
  FileStru.pFrom := lpPasta; // PChar(sPasta2Del);
  FileStru.fFlags := FOF_FILESONLY
                     or FOF_SIMPLEPROGRESS
                     or FOF_NOCONFIRMATION;
                 //  or FOF_SILENT     Ative para não mostrar mensagens
                 //  or FOF_ALLOWUNDO  Ative se quiser usar a lixeira
  bExclusao := ((ShFileOperation(FileStru)=0)
               and
               (not FileStru.fAnyOperationsAborted));
End;

A função é chamada várias vezes; por exemplo, hoje, sexta-feira, é chamada para excluir todas as imagens de segunda-feira e também todas as que existirem na pasta de sábado (amanhã):

Pasta2Del('c:\docume~1\alluse~1\docume~1\cameras\camera1\foto\segunda\*.jpg', true);

Pasta2Del('c:\docume~1\alluse~1\docume~1\cameras\camera1\foto\sabado\*.jpg', true);

Pasta2Del('c:\docume~1\alluse~1\docume~1\cameras\camera2\foto\segunda\*.jpg', true);

Pasta2Del('c:\docume~1\alluse~1\docume~1\cameras\camera2\foto\sabado\*.jpg', true);

Pasta2Del('c:\docume~1\alluse~1\docume~1\cameras\camera3\foto\segunda\*.jpg', true);

Pasta2Del('c:\docume~1\alluse~1\docume~1\cameras\camera3\foto\sabado\*.jpg', true);

Pasta2Del('c:\docume~1\alluse~1\docume~1\cameras\camera4\foto\segunda\*.jpg', true);

Pasta2Del('c:\docume~1\alluse~1\docume~1\cameras\camera4\foto\sabado\*.jpg', true);

O problema é que, em algumas pastas, não funciona... nada é excluído e a mensagem

"Não é possível excluir arquivo. Não é possível ler o arquivo ou disco de origem."

Alguma idéia? (ou há outra forma de excluir vários arquivos de uma só vez, «tipo» um del \pasta\*.jpg ?

Grato!

Abraços!

Editado por paulobergo
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Oi Pessoal... Resolvido!!!

Bastou acrescentar um "ZeroMemory" e um #0 no código... ("bendita PChar!!!!!")... Vejam como ficou:

Function Pasta2Del(sPasta2Del: String; bPastaFica: Boolean): Boolean;
Var
  FileStru: TshFileOpStruct;
  bExclusao: Boolean;
  lpPasta: LPSTR;
Begin
  ZeroMemory(@FileStru, SizeOf(FileStru));  // ****************** Inclusão desta linha
  lpPasta := PChar(sPasta2Del+#0);        // *********** Alteração desta linha, incluindo o #0!
  bExclusao := False;
  FillChar(FileStru, SizeOf(FileStru), 0);
  FileStru.wFunc := FO_DELETE;
  FileStru.pFrom := lpPasta; // PChar(sPasta2Del);
  FileStru.fFlags := FOF_FILESONLY
                     or FOF_SIMPLEPROGRESS
                     or FOF_NOCONFIRMATION;
                 //  or FOF_SILENT     Ative para não mostrar mensagens
                 //  or FOF_ALLOWUNDO  Ative se quiser usar a lixeira
  bExclusao := ((ShFileOperation(FileStru)=0)
               and
               (not FileStru.fAnyOperationsAborted));
End;

Ok?

Abraços!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...