Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error en actualizacion de archivos (https://www.clubdelphi.com/foros/showthread.php?t=44500)

lgarcia 07-06-2007 18:21:40

Error en actualizacion de archivos
 
Hola:

Una vez en el foro se estuvo hablando acerca de la actualizacion de archivos para trabajar siempre con la ultima actualizacion de un exe, yo consegui realizar eso con el siguiente codigo

Código:

var
  fecha1, fecha2: Double;
function GetFileDate(TheFileName: string): Double;
var
 FHandle: integer;
begin
 FHandle := FileOpen(TheFileName, 0);
 try
  Result := Int(FileDateToDateTime(FileGetDate(FHandle)));
 finally
  FileClose(FHandle);
 end;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  ShortDateFormat:= 'MM/dd/yyyy';
  fecha1:= GetFileDate('C:\Archivos de programa\Sadval\sadvalcajero.exe');
  fecha2:= GetFileDate('\\192.168.10.40\sadval$\sadvalcajero.exe');
  if fecha2 > fecha1 then
  CopyFile(Pchar('\\192.168.10.40\sadval$\sadvalcajero.exe'), Pchar('C:\Archivos de programa\Sadval\sadvalcajero.exe'), False);
  Close;
  WinExec(PChar('C:\Archivos de programa\Sadval\sadvalcajero.exe'),SW_SHOWNORMAL);
end;

En algunas maquinas me pincha pero en otras me saca el siguiente error
Invalid argument to date encode

Creo que debe ser por el formato de fechas entre una PC y otra pero he observado que en una maquina que probe y dio resultado esta configurada distinta a la PC mia de trabajo, alguien podria ayudarme con esto

Saludos
Luis Garcia

lgarcia 07-06-2007 21:53:29

Error en actulizacion de archivos
 
Hola:

Ya encontre el error y es que la sentencia

fecha2:= GetFileDate('\\192.168.10.40\sadval$\sadvalcajero.exe');

Hacia referencia a un servidor con Windows Server 2003, el cual siempre te pide autentificacion y al no poder entrar no podia obtener la fecha del fichero remoto, la solucion que se me ocurre es o ponerlo en otra PC con otro SO (XP) o si alguien me podria ayudar a evitar el logeo.

Saludos
Luis Garcia

lgarcia 08-06-2007 19:21:57

Solucion final
 
Despues de la ayuda que me dio el colega Simope sobre la instruccion net use aqui les va la solucion del problema

Código:

var
  fecha1, fecha2: Double;
 
function GetFileDate(TheFileName: string): Double;
var
 FHandle: integer;
begin
 FHandle := FileOpen(TheFileName, 0);
 try
  Result := Int(FileDateToDateTime(FileGetDate(FHandle)));
 finally
  FileClose(FHandle);
 end;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  ShortDateFormat:= 'MM/dd/yyyy';
  fecha1:= GetFileDate('C:\Archivos de programa\Sadval\sadvalcajero.exe');
  WinExec(PChar('net use G: \\server\temp clave /user:administrador'),SW_HIDE);
  fecha2:= GetFileDate('G:\\sadvalcajero.exe');
  if fecha2 > fecha1 then
  CopyFile(Pchar('\\cliente\temp\sadvalcajero.exe'), Pchar('C:\Archivos de programa\Sadval\sadvalcajero.exe'), False);
  WinExec(PChar('net use G: /delete'),SW_HIDE);
  Close;
  WinExec(PChar('C:\Archivos de programa\Sadval\sadvalcajero.exe'),SW_SHOWNORMAL);
end;

Saludos
Luis Garcia


La franja horaria es GMT +2. Ahora son las 15:24:36.

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