Cópia de arquivo
-
Olá pessoal, tudo bem?
Escrevi uma função para fazer uma cópia de um arquivo para uma pasta qualquer, compilei o código no Qt 5 e fiz testes com a função para ver se tudo estava funcionando corretamente.
Tudo funcionou corretamente, porém, para minha surpresa, percebi que quando eu executo o software pelo Qt Creator a cópia é feita com sucesso, já quando executo o software de forma independente o arquivo não é copiado para a pasta destino.
Tentei executa-lo como administrador, mas também sem sucesso. Verifiquei as permissões da pasta destino e também estava tudo ok.
Não faço ideia do que possa estar acontecendo, coloquei o código logo abaixo para ver se alguém pode me ajudar.
@bool enviaXMLparaCaminho(QFile& arquivo, QDir pasta_destino, bool remover) {
//Se o diretório destino existe, fazer...
if (pasta_destino.exists()) {
//Le o caminho completo e pega somente o nome do arquivo
QString nome_arquivo = arquivo.fileName().split("/").last();//Criar um endereço completo para o arquivo destino QFile arquivo_destino; arquivo_destino.setFileName(pasta_destino.path() + "/" + nome_arquivo); int cont=1; forever { if (arquivo_destino.exists()) { arquivo_destino.setFileName(pasta_destino.path() + "/" + QString::number(cont) + "_" + nome_arquivo); } else { break; } ++cont; } //Tenta copiar arquivo para o destino. if (arquivo.copy(arquivo.fileName(), arquivo_destino.fileName())) { if (remover) if (!arquivo.remove()) { cout << "Voce nao tem permissao para excluir o arquivo: " << arquivo.fileName().toUtf8().data() << endl; } } else { cout << "O arquivo " << arquivo.fileName().toUtf8().data() << " nao pode ser copiado, talvez voce nao tenha permissao na pasta destino." << endl; return false; } } else { cout << "Caminho destino nao existe!" << endl; return false; } return true;
}@
-
Olá TIoRoy, obrigado pela interação nesta Thread.
Quanto as DLLs acredito que não seja, porque eu já fiz a configuração na PATH, o caminho configurado na variável é C:\Qt\Qt5.1.0\5.1.0\mingw48_32\bin;
A mensagem de erro retornada é da própria função, na linha 28 do código que postei:
@O arquivo arquivo.xml nao pode ser copiado, talvez voce nao tenha permissao na pasta destino.@
-
Como eu havia citado, tentei executar como administrador, mas também não funciona.
O arquivo também não está como somente leitura, qualquer arquivo que eu tento copiar retorna esta mensagem.
-
Rodando no Linux (Fedora 18 x64) e Qt 5.1, o código funciona perfeito, dentro e fora do QtCreator. Chamei assim:
@
#include <QDir>
#include <QFile>
#include <iostream>using namespace std;
int main(int argc, char *argv[])
{
QDir d("/tmp2");
QFile file("/tmp/teste.txt");
enviaXMLparaCaminho(file, d, false);
}
@Vou tentar num Windows
-
Acabei de testar num Windows.... e funcionou também:
@
int main(int argc, char *argv[])
{
QDir d("/temp2");
QFile file("/temp/teste.txt");
enviaXMLparaCaminho(file, d, false);
}
@!http://s12.postimg.org/6fwh85iil/screenshot_45.png(Console)!
Como você está chamando a função?
-
Olá TIoRoy, obrigado pelas respostas.
Gravarei um vídeo até amanhã para detalhar mais a questão.
Talvez possa nos ajudar.
[]'s