Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   como hacer copiar un archivo desde cualquier hubicacion (https://www.clubdelphi.com/foros/showthread.php?t=62613)

kurono 05-01-2009 04:27:12

como hacer copiar un archivo desde cualquier hubicacion
 
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

Código Delphi [-]
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
Código:

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:

Código Delphi [-]
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.

Código Delphi [-]
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:
Código Delphi [-]
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.

Código Delphi [-]
// 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*);

Cita:

Empezado por AzidRain (Mensaje 333255)
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


La franja horaria es GMT +2. Ahora son las 16:23:54.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi