Fórum Copiar arquivos entre diretórios [ nome longo ] #232925
18/05/2004
0
Em meu sistema preciso copiar arquivos de diversas origens (pastas) diferentes para um destino fixo.
O problema é que os arquivos que preciso copiar são arquivos de música com nome original e eles tem o nome longo.
Além disso ficam armazenados em pastas com nomes também longos.
Exemplo: C:\Musicas\Popular Brasileira\Roberto Carlos\Especial 2000\Amor a Moda Antiga.Mp3
Tentei com CopyFile mas ele não acha o arquivo.
Alguém pode me dar uma dica de como fazer este tipo de cópia.
Obrigado.
Neto
Neto
Curtir tópico
+ 0Posts
18/05/2004
Fabio.hc
procedure TForm1.Button1Click(Sender: TObject); var Origem, Destino:string; begin Origem := ´C:\Musicas\Popular Brasileira\Roberto Carlos\Especial 2000\Amor a Moda Antiga.MP3´; Destino := ´D:\Arquivos de Programas\Arquivos comuns\Borland Shared\Database Desktop\PrivDir\Amor a Moda Antiga.MP3´; CopyFile(PChar(Origem), PChar(Destino), true); end; procedure TForm1.Button2Click(Sender: TObject); begin CopyFile(´C:\Musicas\Popular Brasileira\Roberto Carlos\Especial 2000\Amor a Moda Antiga.MP3´,´D:\Arquivos de Programas\Arquivos comuns\Borland Shared\Database Desktop\PrivDir\Amor a Moda antiga.MP3´,True) end;
Gostei + 0
19/05/2004
Neto
Observe o meu código abaixo (será que pode ser por causa do ListBox??)
===========
procedure TocarMusica;
var
m_path , m_musica , m_origem , m_destino , m_msg: string;
begin
// --- < Pega a primeira musica da lista >
M_Path := FrTocarMusicas.ListBoxPath.Items[0];
M_Musica := FrTocarMusicas.ListBoxMusica.Items[0];
M_origem := PChar(M_path);
M_destino := PChar( ´C:\Tmp\´ + m_musica) ;
// -- Copia a musica para o diretorio e toca a musica
===> Aqui ocorre o erro......
If not CopyFile(PChar(m_origem), PChar(m_destino), true) then
Begin
M_msg := ´Erro Copiando Arquivo ´ + #13 + 10 + ´(Error Code: ´ + IntToStr(Bass_ErrorGetCode)+´)´;
MessageBox(0, PChar(m_msg), ´Erro:´ , Mb_IconError or Mb_ok);
End;
M_musica := ´c:\Tmp\Musica.Mp3´;
Channel := BASS_StreamCreateFile(FALSE, PChar(M_Musica), 0, 0, 0);
BASS_StreamPlay(Channel , False, 0);
end;
Abraços Neto.
Gostei + 0
19/05/2004
Neto
Observe que copio um arquivo de origem variavel para um destino fixo e com nome também fixo.O código está abaixo (será que pode ser por causa do ListBox??).
===========
procedure TocarMusica;
var
m_path , m_musica , m_origem , m_destino , m_msg: string;
begin
// --- < Pega a primeira musica da lista >
M_Path := FrTocarMusicas.ListBoxPath.Items[0];
M_Musica := FrTocarMusicas.ListBoxMusica.Items[0];
M_origem := PChar(M_path);
M_destino := PChar( ´C:\Tmp\´ + m_musica) ;
// -- Copia a musica para o diretorio com o nome Musica.Mp3 e toca a musica
===> Aqui ocorre o erro Codigo 0 ......
If not CopyFile(PChar(m_origem), PChar(m_destino), true) then
Begin
M_msg := ´Erro Copiando Arquivo ´ + #13 + 10 + ´(Error Code: ´ + IntToStr(Bass_ErrorGetCode)+´)´;
MessageBox(0, PChar(m_msg), ´Erro:´ , Mb_IconError or Mb_ok);
End;
M_musica := ´c:\Tmp\Musica.Mp3´;
Channel := BASS_StreamCreateFile(FALSE, PChar(M_Musica), 0, 0, 0);
BASS_StreamPlay(Channel , False, 0);
end;
Abraços Neto.
Gostei + 0
19/05/2004
Fabio.hc
Se o arquivo já existir no destino, a função falha (não copia).
Para que a função possa sobreescrever o arquivo destino (caso exista), altere o último parâmetro de CopyFile para [b:3045f417d0]false[/b:3045f417d0]
Gostei + 0
19/05/2004
Neto
Além disso testei também como False.
Alguém tem outra dica???
Abraços
Gostei + 0
19/05/2004
Neto
Gostei + 0
19/05/2004
Fabio.hc
Neste listbox FrTocarMusicas.ListBoxPath vc grava só o caminho da musica ou o caminho e o nome da musica?
M_Path := FrTocarMusicas.ListBoxPath.Items[0];
M_Musica := FrTocarMusicas.ListBoxMusica.Items[0];
Se for só o caminho então:
M_origem := PChar(M_path[b:67cce08934] + m_musica[/b:67cce08934]);
M_destino := PChar( ´C:\Tmp\´ + m_musica) ;
Gostei + 0
19/05/2004
Neto
para uma pasta.
Agora preciso renomear o arquivo (nome original) para ´Musica.Mp3´.
Estou usando a função RenameFile(NomOld,NomNew), e esta apresentando um erro.
De qualquer forma agradeço a ajuda...
Neto
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)