Copiar arquivos entre diretórios [ nome longo ]
:?: Olá a todos.
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
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
Curtidas 0
Respostas
Fabio.hc
18/05/2004
Fiz um teste de duas formas e funcionou normal:
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
Neto
18/05/2004
Olá Fabio, obrigado pela dica, mas talves seja então a origem da informação que não esta dando certo.
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.
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
Neto
18/05/2004
Olá Fabio, obrigado pela dica, mas talves seja então a origem da informação que não esta dando certo.
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.
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
Fabio.hc
18/05/2004
Talvez seja este o erro.
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]
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
Neto
18/05/2004
Não existe o arquivo na origem.
Além disso testei também como False.
Alguém tem outra dica???
Abraços
Além disso testei também como False.
Alguém tem outra dica???
Abraços
GOSTEI 0
Neto
18/05/2004
Quero dizer não existe no destino...
GOSTEI 0
Fabio.hc
18/05/2004
Uma pergunta?
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) ;
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
Neto
18/05/2004
Ok. já deu certo. Consegui copiar o arquivo com o nome original
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
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