El método falla porque la cadena pasa con saltos de pagina. La recomendación es generar un código que limpie la cadena antes de pasarla si es que estan usando el CopyFile de forma dinámica, por ejemplo si obtienen el archivo de un Opendialog:
En lo particular utilice algo muy rustico para limpiar la cadena:
function Tfrm.DeleteLineBreaks(const S: string): string;
var
Source, SourceEnd: PChar;
begin
Source := Pointer(S) ;
SourceEnd := Source + Length(S) ;
while Source < SourceEnd do
begin
case Source^ of
#10: Source^ := #32;
#13: Source^ := #32;
end;
Inc(Source) ;
end;
Result := S;
end;
.... y la mando a llamar de la siguiente forma.
DeleteLineBreaks(ExtractFileName(edt_cer.Text));
y esta solucionado... no es nada de permisos ni nada por el estilo...
espero les sirva y si alguien le puede hacer una mejor por favor...
Saludos
|