CopyFile & OpenPictureDialog- não copia arquivo!
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
No FormCreate seto o InitialDir (atá aqui aparece o caminho completo (C:\\usuario\\Documents\\My Pictures)
na hora de copiar da erro
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
Curtidas 0
Melhor post
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
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
20/02/2017
Precisa de declarar uses?
GOSTEI 1
Eduardo Silva
20/02/2017
Velho Muito Obrigado!
Só Lembrando que para que precisar que precisa declarar no Users
Só Lembrando que para que precisar que precisa declarar no Users
System.IOUtils
GOSTEI 1
Gutierry Pereira
20/02/2017
Precisa.
Uma dica, ctrl + shift + A declara automaticamente a uses de um meto ou uma classe que esteja selecionada. ;)
Uma dica, ctrl + shift + A declara automaticamente a uses de um meto ou uma classe que esteja selecionada. ;)
GOSTEI 1
Eduardo Silva
20/02/2017
[RESOLVIDO]
GOSTEI 0