PDA

Ver la Versión Completa : como hacer copiar un archivo desde cualquier hubicacion


kurono
05-01-2009, 04:27:12
hola amigos del foro como estan quiero saber como copiar un archivo sin especificar la unidad de origen estado intentando hacerlo de esta manera pero no me sale

BEGIN
COPYFILE (PCHAR('\.\:\BERNARDO.DOC'), PCHAR ('F:\BERNARDO.DOC'), TRUE) ;
END;

Lepe
05-01-2009, 04:44:44
Debes usar rutas absolutas. No voy a adivinar lo que quieres hacer, explícalo si quieres más detalles.

Edito: que serio me ha quedado el mensaje leñe (no era mi intención) :)

Saludos

kurono
05-01-2009, 05:07:40
bueno lo que tengo pensado es hacer es copiar la misma aplicacion que se ejecuta desde un cd-rom a una unidad de la pc esto pienso hacerlo en varios pc puesto que los pc no tienen la misma letra asignada quiero hacerlo asi

AzidRain
05-01-2009, 05:42:42
Si no indicas la unidad, el programa toma por defecto la unidad en donde se esta ejecutando el programa, esto es, si corres tu programa desde la unidad C:, si pones

COPYFILE (PCHAR('\.\:\BERNARDO.DOC'), PCHAR ('F:\BERNARDO.DOC'), TRUE) ;

El programa buscara el achivo BERNARDO.DOC en el directorio raiz de C: (aunque me parece que el path que pusiste está mal escrito. Por otro lado si lo que quieres es que el archivo siempre se guarde en la misma ubicación, digamos el disco duro, sea cual sea la unidad que tenga asignado, creo que no se puede. De hecho todos los programas de instalación te preguntan siempre a donde quieres instalar precisamente por ese motivo.

Caro
05-01-2009, 05:43:08
Hola, si quieres copiar desde el CD-ROM, entonces tendrías primero que ver a que letra pertenece la unidad de CD_ROM, podrías hacer algo como esto:


var
Drive:Char;
CDROM : String;
Tipo:Integer;
begin
for drive:= 'A' to 'Z' do
begin
Tipo := GetDriveType(PChar(drive+':\'));
if Tipo=DRIVE_CDROM then
begin
CDROM := drive+':\';
break;
end;
end;


ahora haces el copiado desde esa unidad.


COPYFILE (PCHAR(CDROM+'BERNARDO.DOC'), PCHAR ('F:\BERNARDO.DOC'), TRUE) ;


Saluditos

Lepe
05-01-2009, 06:27:44
si tu aplicación se está ejecutando en el CD, bastaría con:

rutaOrigen := ExtractFileDir(application.exeName)


Si quieres copiar el archivo a la unidad donde está el windows instalado, podrías usar una función tipo "GetWindowsDir" y extractFileDrive para obtener la letra de dicha unidad.


// función original de NKLIB.
function GetWinDir: String;
begin
SetLength(Result, MAX_PATH);
GetWindowsDirectory(PChar(Result), MAX_PATH);
SetLength(Result, StrLen(PChar(Result)));
end (*GetWinDir*);


Si no indicas la unidad, el programa toma por defecto la unidad en donde se esta ejecutando el programa
Siempre que se me ha olvidado la ruta absoluta, el archivo ha terminado en la carpeta windows :(. Creo recordar que la ruta activa del sistema operativo es distinto de la ruta de tu aplicación.

Tengo entendido (aunque no comprobado) que en tu aplicación puedes usar chDir (creo que esa es la función de delphi) para cambiar la ruta activa del S.O. pero, cualquier programa en ejecución podría hacer lo propio, con lo cual a saber donde se marcha el archivo.

Yo al menos, prefiero no liarme y uso siempre rutas absolutas.

Saludos

kurono
05-01-2009, 06:32:22
ok amigos probare eso codigos