Hola titooo.
Estoy viendo un error lógico que seguramente te esté ocasionando el problema.
Supongo que en esta línea queres verificar si existe el delimitador '\':
Código Delphi
[-]
if copy(destino.Path, length(destino.Path)-1 ,length(destino.Path)) = '\' then
Pero de ese modo, estas tomando los últimos 2 caracteres... Si por ejemplo destino.Path contiene 'C:\Carpeta@\' el resultado será: '@\' y la igualdad no se cumplirá nunca.
Tendría que ser:
Código Delphi
[-]
if copy(destino.Path, length(destino.Path), length(destino.Path)) = '\' then
De todos modos es mas simple hacer:
Código Delphi
[-]
...
var
FullName : string;
begin
if edit1.Text <> '' then
begin
FullName := IncludeTrailingPathDelimiter(destino.Path) + Edit1.Text;
if FileExists(FullName) then
...
y no necesitas comprobación ya que la función incluye el delimitador '\' sólo si no existe al final de la cadena enviada en el argumento.
Saludos.