Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Portuguese
  4. Cópia de arquivo
Forum Updated to NodeBB v4.3 + New Features

Cópia de arquivo

Scheduled Pinned Locked Moved Portuguese
8 Posts 3 Posters 3.6k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G Offline
    G Offline
    guilhermeag
    wrote on last edited by
    #1

    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;
    

    }@

    1 Reply Last reply
    0
    • T Offline
      T Offline
      TioRoy
      wrote on last edited by
      #2

      Que erro aparece?

      Pode ser:

      Quando você roda manualmente, o EXE não acha as DLL's do Qt automaticamente.

      Quando você roda pelo QtCreator, ele coloca as DLL's do Qt (que o seu executável depende) no PATH. Assim ele roda corretamente.

      1 Reply Last reply
      0
      • G Offline
        G Offline
        guilhermeag
        wrote on last edited by
        #3

        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.@

        1 Reply Last reply
        0
        • R Offline
          R Offline
          Rodrigocg
          wrote on last edited by
          #4

          executa o aplicativo como administrador pra ver se resolve... se nao, verifique se o arquivo esta sinalizado como somente leitura...

          1 Reply Last reply
          0
          • G Offline
            G Offline
            guilhermeag
            wrote on last edited by
            #5

            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.

            1 Reply Last reply
            0
            • T Offline
              T Offline
              TioRoy
              wrote on last edited by
              #6

              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

              1 Reply Last reply
              0
              • T Offline
                T Offline
                TioRoy
                wrote on last edited by
                #7

                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?

                1 Reply Last reply
                0
                • G Offline
                  G Offline
                  guilhermeag
                  wrote on last edited by
                  #8

                  Olá TIoRoy, obrigado pelas respostas.

                  Gravarei um vídeo até amanhã para detalhar mais a questão.

                  Talvez possa nos ajudar.

                  []'s

                  1 Reply Last reply
                  0

                  • Login

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Categories
                  • Recent
                  • Tags
                  • Popular
                  • Users
                  • Groups
                  • Search
                  • Get Qt Extensions
                  • Unsolved