Hola jhonalone.
Supongamos que el equipo donde se encuentra el programa se llama
DESKTOP y tu portátil
NOTEBOOK. También supongamos que el programa se encuentra en la ubicacion:
C:\MiPrograma.
Bién, ahora la ubicación que devuelva
GetCurrentDir, es relativa al equipo que esté ejecutando la aplicación, por ejemplo la instrucción:
Código Delphi
[-]
ShowMessage(GetCurrentDir);
. Ejecutada desde
DESKTOP mostrará:
C:\MiPrograma
. Ejecutada desde
NOTEBOOK mostrara:
\\DESKTOP\MiPrograma
El problema es que si desde
NOTEBOOK haces una una copia usando la cadena: 'C:\MiPrograma', estas haciendo referencia al disco C: de
NOTEBOOK y no de
DESKTOP.
No es una idea inteligente espejar los directorios para solapar el error, por que cuando pienses que estas copiando en
DESKTOP lo harás en
NOTEBOOK.
Para verificarlo, podés realizar una simple prueba: Una aplicación con un
TButton y el siguiente código:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
begin
if not CopyFile(PChar('C:\MiPrograma\Archivo.txt'), PChar('C:\MiPrograma\Archivo.bak'), True) then
ShowMessage('ERROR. No se pudo realizar la copia');
end;
.Ejecutado desde
DESKTOP, realiza la copia sin problemas.
.Ejecutado desde
NOTEBOOK muestra el mensaje: 'ERROR. No se pudo realizar la copia'.
Eso sucede por que la aplicación no puede saber desde donde fué ejecutada.
Saludos.
Edito: Ya me olvidaba... : I/O Error 21: ERROR_NOT_READY (The device is not ready)