SoloCodigo

Programación General => Power Builder => Mensaje iniciado por: dcnseC en Viernes 6 de Marzo de 2009, 23:00

Título: OBTENER FECHA DE UN ARCHIVO
Publicado por: dcnseC en Viernes 6 de Marzo de 2009, 23:00
OLA DE NUEVO POR AQUI, TENGO UNA NUEVA CONSULTA...
SIGO CON EL DESARROLLO DE MI PROGRAMITA DE CONTROL DE ARCHIVOS WORD, AHORA SE ME A PRESENTADO LO SIGUIENTE:

TENGO MAS DE 20 MIL ARCHIVOS WORD LISTADOS EN MI BASE DE DATOS QUE LOS MUESTRO MEDIANTE MI APLICACION ECHA EN POWER BUILDER 9.0 , AHORA EL PROBLEMA SE PRESENTA CUANDO QUIERO SABER CUALES FUERON MIS ARCHIVOS MODIFICADOS UN DIA EN ESPECIAL, E PENSADO CON UN CAMPO PARA FECHA Y CAPTURANDO LA FECHA DEL SISTEMA PERO NO CREO QUE ME FUNCIONE POR QUE HAY ARCHIVOS QUE INCLUSO NO LOS ABRO MEDIANTE EL PROGRAMA Y AHI ES CUANDO EL PROGRAMA PERDERIA EL CONTROL VERDADERO DEL ARCHIVO ASIES QUE DESEO SABER SI HAY ALGUNA FORMA DE OBTENER LA FECHA DE MODIFICACION DE UN ARCHIVO.

De antemano gracias por su respuesta.
dcnseC
Título: Re: OBTENER FECHA DE UN ARCHIVO
Publicado por: goldenscriptup en Sábado 7 de Marzo de 2009, 03:03
Aqui tienes un ejemplo que recopile de este sitio.
(w3).tek-tips.com/viewthread.cfm?qid=1390120&page=1

Creas una funcion.

Código: Text
  1. //FUNCTION: uf_file_last_mod( as_filename ) -- returns String
  2.  
  3. //SCRIPT:
  4.  
  5. String ls_path, ls_file, ls_test
  6. DateTime ldt_ret
  7. OLEObject obj_shell, obj_folder, obj_item
  8.  
  9. obj_shell = CREATE OLEObject
  10. obj_shell.ConnectToNewObject( 'shell.application' )
  11.  
  12. ls_path = Left( as_filename, LastPos( as_filename, "" ) )
  13. ls_file = Mid( as_filename, LastPos( as_filename, "" ) + 1 )
  14.  
  15. IF FileExists( as_filename ) THEN
  16.     obj_folder = obj_shell.NameSpace( ls_path )
  17.    
  18.     IF IsValid( obj_folder ) THEN
  19.         obj_item = obj_folder.ParseName( ls_file )
  20.        
  21.         IF IsValid( obj_item ) THEN
  22.             ls_test = obj_folder.GetDetailsOf( obj_item, 3 )
  23.         END IF
  24.     END IF
  25. END IF
  26.  
  27. DESTROY obj_shell
  28. DESTROY obj_folder
  29. DESTROY obj_item
  30.  
  31. RETURN ls_test
  32.  

Si quieres que el return sea datetime es cuestion de que lo modifiques.

Y para que hagas una prueba rapida creas un boton en la ventana y escribes esto pero primero debes de crear el ARCHIVO "c:texto.txt"

Código: Text
  1. String ls_file
  2.  
  3. ls_file = "c:texto.txt"
  4.  
  5. MessageBox("Fecha",uf_file_last_mod(ls_file))
  6.  

En la funcion tiene esta sintaxis "ls_test = obj_folder.GetDetailsOf( obj_item, 3 )" y el numero 3 le corresponde a un tipo de propiedad del archivo, el 3 es la fecha de modificacion del archivo y el 4 es la fecha de la creacion del archivo. En la parte de abajo te pongo la lista disponible.

Cualquier duda no dudes en postearla, espero que te sea de utilidad.

Saludos!

 0 = "Filename"
 1 = "Size"
 2 = "Type"
 3 = "Modified date"
 4 = "Created date"
 5 = "Unknown"
 6 = "Attributes"
 7 = "???"
 8 = "Domene"
 9 = "Artist"
 10= "Tittle"
 11= ""
 12= "Genre"
 13= ""
 14= "Comments"
 15= ""
 16= "Artist"
 17= "Album title"
 18= "Year"
 19= ""
 20= "Genre"
 21= "Duration"
 22= "Bitrate"
 23= "Protected"
 24= ""
 25= ""
 26= ""
 27= ""
 28= ""
 29= ""
 30= ""
 31= ""
 32= "???"
 33= "Audio sample rate"
 34= "Channels"
Título: Re: OBTENER FECHA DE UN ARCHIVO
Publicado por: dcnseC en Lunes 9 de Marzo de 2009, 16:25
HOLA, VOY A TENER QUE PROBAR EL EJEMPLO QUE ME ESTAS DANDO Y SEGUN ESO RESPONSO A LO QUE ME AS ESCRITO... PERO SEGURO QUE ME SERVIRA DE MUCHO....

MUCHAS GRACIAS.

Att. dcnseC Soft
Título: Re:OBTENER FECHA DE UN ARCHIVO
Publicado por: DaVindie en Martes 16 de Julio de 2013, 05:11
Gracias, funciona de maravilla.. nada más hay que colocar el backslash dentro de las comillas en estas dos líneas:

Código: PowerBuilder
  1. ls_path = Left( as_filename, LastPos( as_filename, "\" ) )
  2. ls_file = Mid( as_filename, LastPos( as_filename, "\" ) + 1 )
Título: Re:OBTENER FECHA DE UN ARCHIVO
Publicado por: juliobn1 en Martes 6 de Agosto de 2013, 21:37
Saludos, el codigo me funciona bien pero solo en SO con 32 bit, como puedo hacerlo funcionar en 64 bits, gracias de antemano.