Fórum CopyFile & OpenPictureDialog- não copia arquivo! #575091

20/02/2017

0

Eu não estou conseguindo Copiar o arquivo Selecionado na OpenPictureDialog eu coloquei para OpenPictureDialog abrir sempre eu uma pasta
C:\\Users\\NomeDoUsuario\\Pictures e quando peço o OpenPictureDialog.FileName ele me traz a seguinte rota ('Imagens\\teste.jpg').
como devo proceder para OpenPictureDialog trazer a rota correta para copiar o arquivo.
Usei isso para pegar a pasta
function TfrmTelaPrincipal.GetSpecialFolderPath(folder: integer): string;
const
  SHGFP_TYPE_CURRENT = 0;
var   path: array [0..MAX_PATH] of char;
begin
  {Lista de variaves para uso na Função}
  { CSIDL_PERSONAL           // [Current User]\\My Documents
    CSIDL_COMMON_DOCUMENTS   // \\All Users\\Documents
    CSIDL_MYPICTURES         // [Current User]\\My Documents\\My Pictures
    CSIDL_COMMON_PICTURES    // \\All Users\\Documents\\My Pictures
  }
  if SUCCEEDED(SHGetFolderPath(0,folder,0,SHGFP_TYPE_CURRENT,@path[0])) then
    Result := path
  else
    Result := '';
end;


No FormCreate seto o InitialDir (atá aqui aparece o caminho completo (C:\\usuario\\Documents\\My Pictures)
procedure TfrmManutencaoParametros.FormCreate(Sender: TObject);
begin
  //[Current Windows User]\\My Documents\\My Pictures
  opdParametros.InitialDir := frmTelaPrincipal.GetSpecialFolderPath(CSIDL_MYPICTURES);
end;


na hora de copiar da erro
vDes := Trim(DataModuleGeral.tbParametrosPASTA_BD.AsString+'\\Logo-Escritorio'+vExt);

if not CopyFile(PChar(opdParametros.FileName), PChar(vDes)), False)  then
        raise Exception.Create('Atenção! Erro ao copiar o arquivo.')
Eduardo Silva

Eduardo Silva

Responder

Post mais votado

20/02/2017

boa noite, checa se já existe nesse mesmo caminho um arquivo com o mesmo nome e se o mesmo já esta em uso.
Se existir um arquivo e estiver em uso o sistema operacional não consegue substituir um arquivo em uso.

PS: Dica o seu GetSpecialFolderPath nas versões mais novas do delphi pode ser trocado pela classe TPath. Exemplo de uso :

OpenPictureDialog.InitialDir := TPath.GetPicturesPath;

Espero ter ajudado.

Abraços

Gutierry Pereira

Gutierry Pereira
Responder

Gostei + 1

Mais Posts

21/02/2017

Eduardo Silva

Precisa de declarar uses?
Responder

Gostei + 1

21/02/2017

Eduardo Silva

Velho Muito Obrigado!
Só Lembrando que para que precisar que precisa declarar no Users
System.IOUtils
Responder

Gostei + 1

21/02/2017

Gutierry Pereira

Precisa.
Uma dica, ctrl + shift + A declara automaticamente a uses de um meto ou uma classe que esteja selecionada. ;)
Responder

Gostei + 1

22/02/2017

Eduardo Silva

[RESOLVIDO]
Responder

Gostei + 0

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

Aceitar