CopyFile & OpenPictureDialog- não copia arquivo!

Delphi

20/02/2017

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

Curtidas 0

Melhor post

Gutierry Pereira

Gutierry Pereira

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
GOSTEI 1

Mais Respostas

Eduardo Silva

Eduardo Silva

20/02/2017

Precisa de declarar uses?
GOSTEI 1
Eduardo Silva

Eduardo Silva

20/02/2017

Velho Muito Obrigado!
Só Lembrando que para que precisar que precisa declarar no Users
System.IOUtils
GOSTEI 1
Gutierry Pereira

Gutierry Pereira

20/02/2017

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

Eduardo Silva

20/02/2017

[RESOLVIDO]
GOSTEI 0
POSTAR