Nie chcę rozpoczynać nowego wątku.
Problem mam taki. Korzystam w programie z 2 funkcji do odczytywania daty pliku. Jedna metoda wchodzi w skład TSearchRec, druga to GetFileTime.
Dlaczego w obu funkcjach (mimo prób konwersji do czasu lokalnego) nie mogę uzyskac spójnego czasu???
W obu funkcjach badam ten sam plik. W Windowsie pokazuje mi czas pliku: 27.10.2010 19:56:00
- Kod: Zaznacz cały
//-----------------
//czytanie z filetime
String local="";
HANDLE hFile = CreateFile((E1->Text).c_str(), GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
if(hFile!=0)
{
FILETIME ftC, ftA, ftW;
SYSTEMTIME stutc;
TIME_ZONE_INFORMATION tziOld;
GetFileTime(hFile, &ftC, &ftA, &ftW);
FileTimeToSystemTime(&ftW, &stutc);
GetTimeZoneInformation(&tziOld);
SystemTimeToTzSpecificLocalTime(&tziOld, &stutc, &stutc);
local=SystemTimeToDateTime(stutc).FormatString("dd.MM.yyyy hh:nn:ss");//czas zwiększony o 1 godzine względem windows
CloseHandle(hFile);
}
//czytanie z tsearchrec
String local4, local5;
TSearchRec sr;
if(FindFirst(E1->Text,faAnyFile, sr)==0)
{
local4=FileDateToDateTime(sr.Time).FormatString("dd.MM.yyyy hh:nn:ss"); //czas zgodny z tym co pokazuje windows
TDateTime dataplk=FileDateToDateTime(sr.Time);
SYSTEMTIME stutc2, stlocal2;
TIME_ZONE_INFORMATION tziOld;
GetTimeZoneInformation(&tziOld);
DateTimeToSystemTime(dataplk,stutc2);
SystemTimeToTzSpecificLocalTime(&tziOld, &stutc2, &stlocal2);
local5=SystemTimeToDateTime(stlocal2).FormatString("dd.MM.yyyy hh:nn:ss"); //Konwersja do czasu lokalnego. Czas zwiększony o 2 godziny względem tego co pokazuje windows. Nic nie rozumiem.
}
FindClose(sr);
I tak. Korzystając z GetFileTime uzyskuje czas dla zmiennej local = 27.10.2010 20:56:00 - zwiększony o 1 godzinę. Z funkcji TSearchRec zmienna local4 = 27.10.2010 19:56:00 - czyli prawidłowo, local5 = 27.10.2010 21:56:00 (konwersja do czasu lokalnego) czyli zwiększony o 2 godziny.
Wydaje się, że metoda TSearchRec (bez konwersji do UTC) działa ok. Jednak czego mi brakuje w funkcji GetFileTime, że jest różnica w odczycie.
Jak zegrać odczyty czasu z przy pomocy tych 2 metod? Co uzyć, aby uzyskać odczyt tych samych wartości daty pliku?