GARANTIR DESCONTO

Fórum Copiar - Mover - Renomear foto #414777

29/03/2012

0

Bom Dia

Estou com o seguinte problema

Estou tentando copiar, mover, renomear fotos adicionado pelo usuario só que esta acontendo o seguinte ele esta copiando e renomeando só que está copiando 2 vezes o mesmo arquivo.

Ex.

foto.jpg ele copia e joga na pasta Destino renomea para **001A.jpg** só que na mesma pasta destino ele mantem
tambem uma copia da foto.jpg


var
Nome : string;
destino, origem, extensao : string;
begin
if OpenDialog.Execute then
begin

Nome := ExtractFileName(OpenDialog.FileName); // Extrai o da Nome da foto
origem := ExtractFilePath(OpenDialog.FileName);
extensao := ExtractFileExt(OpenDialog.FileName); // extensao
destino := C:\Arquivos de Programas\Agenda\Fotos\Antes\; // Caminho padrao

CopyFile(PChar(origem+Nome), PChar(destino+Nome), False);// move para pasta ** aqui ele esta copiando em duplicidade **


RenameFile(origem+Nome, destino+DBEmatricula.Text+A+extensao);
Frost

Frost

Responder

Posts

29/03/2012

Joel Rodrigues

Veja bem: o Rename de certa forma funciona também como um Move.
Primeiro você está copiando o arquivo com o nome original depois você está renomeando o arquivo de acordo com o que o usuário digitou (isso acaba movendo o arquivo para a pasta destino com o nome novo).
Logo, você está jogando dois arquivos na pasta destino.
Responder

Gostei + 0

29/03/2012

Alisson Santos

o correto é primeiro você renomear o arquivo e depois move-lo, pois assim não ocasionaria o que está ocorrendo.
Responder

Gostei + 0

29/03/2012

Joel Rodrigues

VocÊ tem duas opções:
1) primeiro renomeia e depois copia. Para renomear, não use DESTINO e sim ORIGEM no novo nome:
RenameFile(ORIGEM+Nome, ORIGEM+DBEmatricula.Text+A+extensao);
//copiar
2) Você copia e depois renomeia o arquivo que já foi movido:
//copiar
RenameFile(DESTINO+Nome, DESTINO+DBEmatricula.Text+A+extensao);

Acho o segundo mais interessante, pois você não altera o arquivo original.

Teste aí e veja no que dá. Mantenha-nos informados.
Responder

Gostei + 0

29/03/2012

Bruno Leandro

qual a sua ideia, pra mim ficou meio confuso, voce quer copiar para uma pasta destino o arquivo com um nome diferente
ou voce quer copiar com o mesmo nome e mudar o nome do arquivo de origem ?

para copiar com outro nome voce poderia usar assim

CopyFile(PChar(origem+Nome), PChar(destino+DBEmatricula.Text+A+extensao), False);

para renomear o arquivo de origem e copiar com o nome original tente assim

CopyFile(PChar(origem+Nome), PChar(destino+Nome), False);
RenameFile(origem+Nome, origem+DBEmatricula.Text+A+extensao);
Responder

Gostei + 0

30/03/2012

Frost

Bom dia
Obrigado a todos que estão me ajudando

Veja

RenameFile(DESTINO+Nome, DESTINO+DBEmatricula.Text+A+extensao); // Não renomea, não sei se é porque tom com o W7 ja dei permissão na pasta para o
programa.



RenameFile(origem+Nome, destino+DBEmatricula.Text+A+extensao); // desse jeito até renomeia a cada 3 uma não renomea
Responder

Gostei + 0

02/04/2012

Joel Rodrigues

Verifique se o arquivo DSTINO+Nome realmente existe. É estranho renomear em uma pasta e outra não.
Responder

Gostei + 0

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

Aceitar