Problem z FileAge

0

Witam! Usiłuję pobrać informację o czasie utworzenia pliku za pomocą funkcji FileAge. Po zastosowaniu przykładu z helpa wszystko działa ale plik jest oszkodzony (tak dokładniej to jest jpg). Jak to zrobić żeby nie psuło pliku i działało porządnie?

PS. Ogarnąłem trochę chaos... Podany kod podaje tylko czas ostatniego otwarcia pliku, a powinien czas utworzenia. Dlaczego???

 TDateTime Dt;
 Dt = FileDateToDateTime(FileAge(FileListBox1->FileName));
 Label2->Caption =  Dt.FormatString("dd mmmm yyyy-hh.nn.ss");

W helpie pisze: Call FileAge to obtain the OS timestamp of the file specified by FileName.
A w temacie następnym:C++ Builder calls FileAge to learn the last modification date and time of a file.

Niech się zdecydują, timestamp czyli utworzenie, czy modyfikacja .... i jak uzyskać to co potrzebuję?

0

Ja bym kombinował raczej z WinAPI, na przykład tak:

char* FileName = "C:\\Autoexec.bat";
HANDLE hFile;
hFile = CreateFile( FileName, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
if ( hFile == INVALID_HANDLE_VALUE ) {
   /* tu jakas akcja na błąd - można se na przykład wyjątkiem rzucic*/
   ShowMessage( "BŁĄD" );
  }

/*i odczytujemy se date*/
FILETIME Create;
FILETIME Access;
FILETIME Write;
SYSTEMTIME Czas;
GetFileTime( hFile, &Create, &Access, &Write );
FileTimeToSystemTime( &Create, &Czas );

Form1->Caption = IntToStr(Czas.wDay) + "-" + IntToStr(Czas.wMonth) + "'" + IntToStr(Czas.wYear);
/* Teraz w odpowiednich polach struktury Czas masz dane dotyczące utworzenia pliku*/

CloseHandle(hFile);
0

DZIĘKI!!! Już zwątpiłem że ktoś da znać. Faktycznie sopsób o niebo lepszy :) Jest to prawie perfekcja. Gubi jedną godzinę z odczytywanej ale to się da połatać ...

1 użytkowników online, w tym zalogowanych: 0, gości: 1