Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Hora en que se grabó un fichero (https://www.clubdelphi.com/foros/showthread.php?t=73010)

chinchan 25-03-2011 13:32:49

Hora en que se grabó un fichero
 
Hola a todos. Estoy haciendo una aplicación en C++ Builder y necesito saber la hora en que se grabó un fichero, realmente es para ir mirando a este fichero cada poco tiempo y saber si ha sido modificado. Gracias

Neftali [Germán.Estévez] 25-03-2011 15:40:43

Revisa esta entrada de mi blog: Fechas de un fichero (creación, modificación y últ. acceso)

Está para delphi., pero supongo que las funciones deben ser equivalentes y el código que se muestra te puede dar una idea de cómo hacerlo. Usa la API GetFileTime que es la misma llamada que deberás utilizar tú.

escafandra 25-03-2011 21:19:00

Código:

TDate GetModifyFileDate(char* FileName)
{
  WIN32_FILE_ATTRIBUTE_DATA FileData;
  SYSTEMTIME SystemTime;
  GetFileAttributesEx(FileName, GetFileExInfoStandard, &FileData);
  FileTimeToSystemTime(&FileData.ftLastWriteTime, &SystemTime);
  return EncodeDate(SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay);
}

Saludos.

chinchan 26-03-2011 01:41:21

Muchas gracias a los dos por darme una solución a mi pregunta. Pero os tengo que decir que estoy totalmente pez en el uso de las API de Windows y no consigo saber la hora que ha sido modificado un fichero con vuestro codigo. Seguro que está bien y la culpa es mia. Perdonarme, pero ¿me podéis empujar un poquito mas? con un ejemplo. ¿Á qué hora fue modificado el fichero C:/ejemplo.txt ?. Os doy mi palabra de que llevo un montón de horas intentándolo pero no lo consigo. Muchísimas gracias.

escafandra 26-03-2011 17:06:24

Un formulario con un TEdit, un TOpenDialog, un TDateTimePicker y un botón.

Al apretar el botón se abrirá el OpenDialog, elegimos un archivo. Tras la elección el nombre del archivo aparece en el Edit y la fecha de última modificación en el DateTimePicker.

Código:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

TDate GetModifyFileDate(char* FileName)
{
  WIN32_FILE_ATTRIBUTE_DATA FileData;
  SYSTEMTIME SystemTime;
  GetFileAttributesEx(FileName, GetFileExInfoStandard, &FileData);
  FileTimeToSystemTime(&FileData.ftLastWriteTime, &SystemTime);
  return EncodeDate(SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay);
}

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  if(OpenDialog1->Execute()){
    Edit1->Text = OpenDialog1->FileName;
    DateTimePicker1->Date = GetModifyFileDate(OpenDialog1->FileName.c_str());
  }
}
//---------------------------------------------------------------------------


Saludos.

escafandra 26-03-2011 17:11:25

Una apreciación, si estás intentando rutas de archivo directamente en C/C++.
Recuerda que el caracter "\" es de control por lo que si se quiere es usarlo talcual, se debe escribir dos veces. Así, C:\ejemplo.txt será "C:\\ejemplo.txt"

Código:

TDate Date = GetModifyFileDate("C:\\ejemplo.txt");
Saludos.

chinchan 27-03-2011 03:25:28

Perfecto, Genial, Muchissssimas Gracias. Lo he conseguido!!. La verdad, no se que haría sin vosotros.
Un saludo


La franja horaria es GMT +2. Ahora son las 08:51:38.

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