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
Qt 6.11 is out! See what's new in the release blog

Cópia de arquivo

Scheduled Pinned Locked Moved Portuguese
8 Posts 3 Posters 4.0k 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