GetFileTime -> Liefert immer den selben Wert
-
Grüsse zusammen,
Ich wollte feststellen, ob während dem benutzen meines Programmes, die Datei verändert wurde, welche ich geladen habe. Aber egal was ich mit der Datei anstelle, die Zeit bleibt immer die gleiche, welche ich hole. Folglich muss ich wohl irgendwo einen Fehler machen. Die Frage ist welcher?
#include <Windows.h> #include <iostream> int main() { // Create file handle. HANDLE hFile = ::CreateFile(L"./test.dat", FILE_READ_ATTRIBUTES, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); if(hFile != INVALID_HANDLE_VALUE) { // Get first time. FILETIME StartFileTime; ::GetFileTime(hFile, NULL, NULL, &StartFileTime); std::cout << "Modify the file now!" << std::endl; std::cin.clear(); std::cin.sync(); std::cin.get(); // Modify file manually. (1) // Get second time. FILETIME NextFileTime; ::GetFileTime(hFile, NULL, NULL, &NextFileTime); // Output. std::cout << " Low: 1: " << StartFileTime.dwLowDateTime << " 2: " << NextFileTime.dwLowDateTime << std::endl; std::cout << "High: 1: " << StartFileTime.dwHighDateTime << " 2: " << NextFileTime.dwHighDateTime << std::endl; } else { std::cout << "Error!" << std::endl; } std::cin.clear(); std::cin.sync(); std::cin.get(); return 0; }Am Punkt (1) modifiziere ich die Datei von Hand mit einem Texteditor. Aber die Ausgabe von StartFileTime und NextFileTime ist genau die gleiche, als hätte sich die Datei nicht verändert.
Wenn ich die Eigenschaften von der Datei über den Explorer aufrufe, dann zeigt es mir allerdings ganz klar eine Veränderung an.Das Handle neu zu erstellen, nach dem die Datei verändert wurde, half auch nichts.
Wo ist mein Fehler?
Grüssli
-
Ich glaube du träumst gerade

Wenn du nur FILE_SHARE_READ mitgibst kannst du die Datei garnicht verändert haben während das HANDLE offen war.
-> du hast eine andere Datei verändert.
-
Hier stand mist ...
Es war wirklich die falsche Datei, könnte mich bitte jemand schlagen? ^^
Tut mir leid, dass ich so dumm war ... ich könnte mich ...
Grüssli
-
Dravere schrieb:
könnte mich bitte jemand schlagen? ^^
... ich könnte mich ...
GrüssliAufrufe zu Gewalttätigkeiten werden grundsätzlich nicht beantwortet. :p
-
Elektronix schrieb:
Aufrufe zu Gewalttätigkeiten werden grundsätzlich nicht beantwortet. :p
Hier bekommt man echt keine Hilfe

Ärgere mich jetzt noch ab dem Fehler. Weiss nicht mal wieso ich dieses zweite test.dat File überhaupt hatte. Und der Fehler hat mich so Zeit gekostet. Wollte es nämlich mit boost::filesystem::last_write_time lösen. Das lieferte mir das falsche Ergebnis, dachte dann, dass ich was falsche verstanden hatte, habe sogar die Mailingliste von Boost durchsucht. Dann den Quellcode angeschaut. Dann die MSDN durchgeschaut, die Sache nachgebaut ... usw.
Wir brauchen ein Smilie, welches seinen Kopf an die Wand schlägt

Grüssli
-
Schliese die Datei erstmal, bevor Du gültige Werte bekommst... während dem die Datei offen ist, wird diese Zeit nicht aktualisiert...