Datei Änderungsdatum mit __TIMESTAMP__ ODER GetFileTime? Wie?
-
wie wäre es mit ein wenig code zum fehler suchen, ansonsten empfehl ich dir einfach mal die formatflags für printf anzuschauen .... ich vermute mal du hast printf(MYTIMEVAL); versucht, aber das wäre thema verfehlt
-
im prinzip hab ichs mit dem stück quelltext meines vorredners versucht:
FILETIME ftCreation, ftLastAccess, ftLastWrite; HANDLE hFile = CreateFile("C:\\test.txt",GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0); GetFileTime(hFile, &ftCreation, &ftLastAccess, &ftLastWrite); SYSTEMTIME stTime; FileTimeToSystemTime(&ftLastWrite, &stTime); printf(stTime.wHour); scanf(0);
-
du verstehst printf() garnicht
printf heißt printformatted du gibst zuerst den formatstring an und dann die parameter
bitte such dir ne FAQ dazu bevor du jetzt folgendes einfach abtippst
printf("%02d", stTime.wHour);
zur info % deutet einen parameter an 02 heißt 2 stellen mit vorangestellten nullen 00, 01, 02 usw. d heißt dezimalzahl.
ein ausgefallener formatstring bringt oft wunderschöne ergebnisse
printf("meine Datei ist %2d Stunden %2d Minuten %2d.%03d Sekunden alt", stTime.wHour, stTime.wMinute, stTime.wSecond, stTime.wMillisecond);
ergebnis mit pseudowerten
"meine Datei ist 22 Stunden 3 Minuten 34.012 Sekunden alt"
-
ah shit da war ja was. wie peinlich.
vielen dank das du dir trozdem die mühe gemacht hast
-
Jetzt gibt er zwar was aus, aber immer das selbe. D.h. die Zeit ändert sich nicht obwohl die Uhr weiter läuft.
#include <stdio.h> #include <windows.h> int main() { FILETIME ftCreation, ftLastAccess, ftLastWrite; HANDLE hFile = CreateFile("C:\\test.txt",GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0); GetFileTime(hFile, &ftCreation, &ftLastAccess, &ftLastWrite); SYSTEMTIME stTime; FileTimeToSystemTime(&ftLastAccess, &stTime); CloseHandle(hFile); printf("meine Datei ist %2d Stunden %2d Minuten %2d Sekunden alt", stTime.wHour, stTime.wMinute, stTime.wSecond); scanf(0); return true; }
-
was genau gibt er denn aus ? ich kann (bis auf die tatsache das du anscheinend ständig ne neue datei erzeugst) keinen fehler drin finden ...
versuch doch mal statt lastaccess mal lastwrite und lastcreation auszulesen und wo du schon dabei bist lass dir von lastaccess gleich noch year month und day ausgeben, mich beschleicht da schon ein verdacht
-
1601 Jahre 1 Monat 1 Tag 0 Stunden 3 Minuten 20 Sekunden
Bei lastAccess. Egal ob ich die Systemzeit ändere oder die Datei bearbeite.
Die andern Sachen (Creation, LastWrite) geben zwar untersch. Werte aber auch immer konstante aus.
-
Return Values
If the function succeeds, the return value is nonzero.If the function fails, the return value is zero. To get extended error information, call GetLastError.
wenn GetFileTime also 0 als ergebnis liefert, gib mal GetLastError()-Code aus ansonsten seh ich grad nicht wo das problem liegt oder ich bin einfach blind
PS gibt denn wenigstens lastcreation einen sinnvollen wert zurück oder liegt der auch irgendwo um das jahr 1600 ???
-
Creation gibt:
1632 Jahre 3 Monate 20 Tage 21 Stunden 43 Minuten 42 Sekunden
aus.Bei GetLastError(); gibt er mir garnix aus. Aber es wird auch nich solange gewartet bis ich ne Taste drück (wie von scanf gefordert) sondern nach ein paar Sekunden geht die Konsole einfach zu.
-
versuchs mit System("PAUSE"); ich hoff doch mal das es das war .... ansonstn bin ich erstmal ratlos, ich kanns hier im moment einfach nicht ausprobiern
-
Jo trozdem erstmal danke für deine hilfe.