GARANTIR DESCONTO

Fórum Não consigo transferir arquivo do cliente para o servidor #442682

12/05/2013

0

Boa noite amigos, estou a dois meses me aventurando no mundo Delphi, e com muita ajuda das vídeo-aulas do Canal Delphi do site DevMedia eu tenho conseguido entender bastante coisa dessa linguagem maravilhosa, mas nem tudo são flores eu me deparei com esse problema criei um formulário de cadastro e apos usuário efetuar o referido cadastro a aplicação cliente deve enviar um arquivo para um servidor na rede onde já existe um diretório de pastas, porém a aplicação ainda necessita criar neste diretório mais duas pastas, não sei como fazer a verificação se a pasta existe o código abaixo adaptei de exemplos encontrados no site Club Delphi.
Busco normalmente o arquivo, e gravo o caminho do mesmo, em um edit, através da procedure abaixo:
procedure Tfrm_CadProposicao.BuscarClick(Sender: TObject);
begin
  inherited;
          begin
              OpenDialog:= TOpenDialog.Create(nil);
              OpenDialog.Title:='Selecione um Documento ...';
              OpenDialog.Filter:='Todos os Documentos Admitidos |*.pdf;*.doc;*.xls;*.txt;*.rtf;*.ttf';
                if OpenDialog.Execute then
                edtCaminho.Text:= OpenDialog.FileName;
              FreeAndNil(OpenDialog);
              btn_Enviar.Visible := True;
              txt_Mandato.Text := cbb_Mandato.Text;
              txt_Tipo.Text := cbb_TipoProposicao.Text;
          end;
end;



Depois passo oas parâmetros do origem e destino para a função CopyFile:

var 
  arquivo_origem, arquivo_destino: string; 

procedure Tfrm_CadProposicao.btn_EnviarClick(Sender: TObject);
begin
  inherited;
  arquivo_origem := edtDelphiCaminho.Text;
  arquivo_destino := '\\192.168.0.5\C:Sistema Prolegis\ARQUIVOS\PROPOSICOES\MANDATO\' + txt_Mandato.Text + '\'+ txt_Tipo.Text + '\''';
  CopyFile(PChar(arquivo_origem), PChar(arquivo_destino), True)
end;


E o resultado é simplesmente nada, não dá erro, não cria as pastas, e nem copia o arquivo selecionado.
Alguém poderia, pelo amorrrrrrrrr de Deus, me dizer o que está faltando neste código, ou o que eu fiz errado?
Celso Souza

Celso Souza

Responder

Posts

12/05/2013

Carlos Bernardo

Amigo no arquivo de destino ao invés de usar C: usa C\

arquivo_destino := '\\192.168.0.5\C:'+ bla bla bla;
arquivo_destino := '\\192.168.0.5\C\'+ bla bla bla;
Responder

Gostei + 0

13/05/2013

Celso Souza

Ola Carlos! Obrigado pela atenção amigo, fiz a alteração que vc me propôs, ainda não copia nada e também não dá erro algum.
Responder

Gostei + 0

14/05/2013

Leonardo Xavier

As permissões de escrita na sua pasta de ftp esta em 777 (gravação, escrita, leitura)?
Responder

Gostei + 0

14/05/2013

Wilson Brito

Tente fazer assim:

procedure Tfrm_CadProposicao.btn_EnviarClick(Sender: TObject);
begin
inherited;
arquivo_origem := edtDelphiCaminho.Text;
arquivo_destino := '\\192.168.0.5\C:Sistema Prolegis\ARQUIVOS\PROPOSICOES\MANDATO\' + txt_Mandato.Text + '\'+ txt_Tipo.Text + '\' + ExtractFileName(edtDelphiCaminho.Text); //Informar o nome do arquivo de destino
If not DirectoryExists(ExtractFilePath(arquivo_destino)) Then //Forçar a criação dos diretórios
  ForceDirectories(ExtractFilePath(arquivo_destino));
CopyFile(PChar(arquivo_origem), PChar(arquivo_destino), True)
end;
Responder

Gostei + 0

14/05/2013

Diego Garcia

só por desencargo, tente usar uma pasta que não tem espaços no nome, pode ser que você está tendo problemas por causa desse "Sistema Prolegis", caso funcione em um diretório sem espaços, tente passar o caminho do arquivo entre aspas.
Responder

Gostei + 0

14/05/2013

Rodrigo Bernal

Caro colega verificando conforme o colega acima postou este previlegs, provavelmente ele esta fazendo com que não grave
seguinte coloque da seguinte forma c:\suapasta\seuaquivo e verifica.
Responder

Gostei + 0

14/05/2013

Celso Souza


Boa noite Amigos
Com a ajuda de vocês, e mais a importantíssima colaboração do companheiro batera do fórum Active Delphi, conseguimos resolver o problema.
E pra quem precisar vai ai o código completo:

var
    //variáveis que armazenarão os valores para a função copyfile
     arquivo_origem, arquivo_destino: string;


procedure Tfrm_CadProposicao.btnDelphiBuscarClick(Sender: TObject);
begin
  inherited;
          begin
          //abre a janela para selecionar o arquivo
                OpenDialog:= TOpenDialog.Create(nil);
                OpenDialog.Title:='Selecione um Documento ...';
                OpenDialog.Filter:='Todos os Documentos Admitidos |*.doc;*.xls;*.txt;*.rtf;*.ttf;*.htm;*.html';
                if OpenDialog.Execute then

          //depois de selecionado o caminho do arquivo é gravado no edit
                edtDelphiCaminho.Text:= OpenDialog.FileName;
                FreeAndNil(OpenDialog);
                btn_Enviar.Visible := True;

          //os valores das combobox servem pra definir o caminho de destino, que sempre mudam
                txt_Mandato.Text := cbb_Mandato.Text;
                txt_Tipo.Text := cbb_TipoProposicao.Text;
          end;
end;


procedure Tfrm_CadProposicao.btn_EnviarClick(Sender: TObject);
begin
  inherited;
          //variável recebe o valor gravado ao buscar o arquivo
           arquivo_origem := edtDelphiCaminho.Text;

         //variável recebe o endereço do servidor e os valores passados pelas combobox ao edits e mais o nome do arquivo de origem
          arquivo_destino := '\\192.168.0.5\C\Sistema Prolegis\ARQUIVOS\PROPOSICOES\MANDATO\' + txt_Mandato.Text + '\'+ txt_Tipo.Text + '\' + ExtractFileName(arquivo_origem);

         //criando os diretorios de destino
           CreateDir('\\192.168.0.5\C\Sistema Prolegis\ARQUIVOS\PROPOSICOES\MANDATO\' + txt_Mandato.Text);
  CreateDir('\\192.168.0.5\C\Sistema Prolegis\ARQUIVOS\PROPOSICOES\MANDATO\' + txt_Mandato.Text + '\'+ txt_Tipo.Text);

         //chamada da função copy
           if CopyFile(PChar(arquivo_origem), PChar(arquivo_destino), True)=true then
  showmessage('Arquivo copiado com sucesso');
  end;


Muito bom mesmo! e em breve estarei aqui novamente com mais uma dúvida, tenho certeza disso.
Abraços e muito obrigado mesmo aos amigos pela preciosa atenção.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar