Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cumpadre

Erro com remoção de diretório

Recommended Posts

Pessoal, estou quase refazendo um programa de 600 linhas por causa de 1 erro ridículo, não esntendo o que acontece.

 

Isso funciona perfeitamente:

 

If smoke.Value = 1 ThenIf retvil = "particle.fsh" Thenretvil = ""FileCopy Text1.Text + "\Backup2\smoke\particle.fsh", Text1.Text + "\GameData\Render\particle.fsh"FileCopy Text1.Text + "\Backup2\smoke\carpart.ini", Text1.Text + "\GameData\Render\carpart.ini"FileCopy Text1.Text + "\Backup2\smoke\particle.ini", Text1.Text + "\GameData\Render\particle.ini"Kill Text1.Text + "\Backup2\smoke\*.*"RmDir Text1.Text + "\Backup2\smoke"End IfEnd If

Funciona assim: se a checkbox "smoke" estiver marcada, ele verifica o valor da variável "retvil". Essa variável indica a existência ou não do arquivo "particle.fsh". Se o arquivo existir, o programa copia os arquivos da pasta onde está "particle.fsh", deleta-os e remove o diretório.

 

 

 

Porém nessa parte do programa ele me dá erro de acesso ao diretório "chrome" na hora de removê-lo:

 

If chrome.Value = 1 ThenIf retuil = "carcmn.fsh" Thenretuil = ""FileCopy Text1.Text + "\Backup2\chrome\carcmn.fsh", Text1.Text + "\GameData\CarModel\carcmn.fsh"Kill Text1.Text + "\Backup2\chrome\*.*"RmDir Text1.Text + "\Backup2\chrome"End IfEnd If

Funciona perfeitamente, ele apenas não consegue apagar o diretório, eu não consigo entender por que. O problema não está no nome do diretório, porque eu já fiz testes mudando o nome e deu o mesmo erro. Eu imaginei que pudesse ser o tamanho do arquivo (1,03mb) sendo que os outros tinham menos de 300kb, mas eu fiz um testoe com um arquivo menor e deu o mesmo erro. E também não pode ser a existência de mais arquivos nele porque ele da deleta tudo antes de apagar.

 

Alguém já teve algum problema semelhante? O que mais pode ser que tá atrapalhando a remoção do diretório?

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

clica com o botão direito em todas as pastas que fazem parte do seu programa e da permissão total pra todos os usúarios !!! é uma ideia ..tenta ai ..qq coisa posta ae !!!outra coisa que pode ser talves é que algum arquivo dentro do diretório está sendo usado !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, eu não havia pensado nisso mas testei agora e também não é esse o problema =PAs pastas e arquivos que o programa vai copiar e apagar, foram criados pelo proprios programa num outro sub. Eu não sei por que mas todos os arquivos que o programa copia e todos que ele cria, no atributo "somente leitura" não fica nem branco e nem checado e sim "grayed" (aquele quadrado preto).Mas acho que não é esse o problema pois está dando certo no primeiro code que eu postei e não no segundo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele dá erro de acesso ao diretório, por estar em uso. Realmente não é possível excluir o diretório nem mesmo manualmente enquanto o programa está aberto.Os mesmos acessos que eu fiz ao diretório chrome também foram feitos ao smoke, porém eu consigo apagar esse segundo.Tem algum modo de eu cortar o acesso do vb ao diretório?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele dá erro de acesso ao diretório, por estar em uso. Realmente não é possível excluir o diretório nem mesmo manualmente enquanto o programa está aberto.

 

Os mesmos acessos que eu fiz ao diretório chrome também foram feitos ao smoke, porém eu consigo apagar esse segundo.

 

Tem algum modo de eu cortar o acesso do vb ao diretório?

<{POST_SNAPBACK}>

Experimente chdir() para mudar o diretório de trabalho (se o caso de "estar em uso" significar que ele é o diretório corrente).

 

Abraços,

 

Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também não deu. Porque o programa não está no diretório corrente.Eu digo em uso pq o programa faz operações no diretório chrome (copiar os arquivos, apagá-los e remover o diretório)o ChDir alterou o diretório de trabalho (CurDir) e não é nele o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, eu recortei uns pedaços do programa e descobri o seguinte:

 

as variáveis retvil e retuil são String e no começo do Sub em que eu puis os dois trechos sitados há essa função:

 

retvil = Dir$(Text1.Text + "\Backup2\smoke\particle.fsh")retuil = Dir$(Text1.Text + "\Backup2\chrome\carcmn.fsh")

se eu mudar o "retuil = Dir$(...)" para "retuil = Dir$(qualquer arquivo existente em outra parte do pc)" ele funciona perfeitamente.

 

Algumas observações:

 

No diretório smoke tenho 3 arquivos:

particle.fsh - 110 kb

carpart.ini - 5,73 kb

particle.ini - 37,8 kb

 

No diretório chrome tenho 1 arquivo:

carcmn.fsh - 1,03 mb

 

Por que a váriavel retuil tá segurando o diretório em uso e a retvil não?

Compartilhar este post


Link para o post
Compartilhar em outros sites

FINALMENTE ACHEI O ERRO!!!

 

retval = Dir$(Text1.Text + "\GameData\cwindow\356_1.tpg")retvol = Dir$(Text1.Text + "\GameData\owindow\356_1.tpg")retvul = Dir$(Text1.Text + "\Backup2\improoved\356_1D.fsh")retvil = Dir$(Text1.Text + "\Backup2\smoke\particle.fsh")retuil = Dir$(Text1.Text + "\Backup2\chrome\carcmn.fsh")

retuil era a última variável declarada e, creio eu que, era ela que estava segurando o arquivo.

foi só definir uma outra variável qualquer depois dela:

 

retuil = Dir$(Text1.Text + "\Backup2\chrome\carcmn.fsh")retval = Dir$(Text1.Text + "\GameData\cwindow\356_1.tpg")retvol = Dir$(Text1.Text + "\GameData\owindow\356_1.tpg")retvul = Dir$(Text1.Text + "\Backup2\improoved\356_1D.fsh")retvil = Dir$(Text1.Text + "\Backup2\smoke\particle.fsh")retmet = Dir$(Text1.Text + "\Porsche.exe")

Valeu pela esforço, pessoal!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.