Problem mit FileTimeToSystemTime



  • Hallo, ich lese gerade aus einem Ordner alle Dateien aus und deren Erstellungsdatum.

    filename: 6 creation time: 14:41:26:0
    filename: 7 creation time: 14:41:26:0

    Datei 7 habe ich aber ca. 4 Sekunden später erstellt wieso wird mir die selbe creation time wie bei Datei 6 ausgeben?

    Was mache ich da falsch?

    #include <iostream>
    #include <windows>
    #include <vector>
    #include <sstream>
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    FILETIME time;
    SYSTEMTIME sysTime;
    
    bool next_file;
    WIN32_FIND_DATA  FileData;
    WIN32_FIND_DATA  FileDataNext;
    
    string newest_file;
    
    HANDLE FindHandle = FindFirstFile("*",&FileData);
    
    do
    {
    	  next_file = FindNextFile(  FindHandle , &FileDataNext );
    	  time = FileDataNext.ftCreationTime;
    	  FileTimeToSystemTime( &time, &sysTime );
    
    	  cout<<"filename: " << FileDataNext.cFileName << "  creation time: " << sysTime.wHour<<":"<<sysTime.wMinute<<":"<<sysTime.wSecond<<":"<<sysTime.wMilliseconds<<endl;
    
    }
    while( next_file == 1);
    
    system("PAUSE");
    
    	return 0;
    }
    

    Programm Ausgabe:
    [code]
    filename: .. creation time: 8:28:45:125
    filename: 1 creation time: 14:10:33:421
    filename: 2 creation time: 14:21:46:312
    filename: 3 creation time: 14:21:46:312
    filename: 4 creation time: 14:31:17:312
    filename: 5 creation time: 14:31:17:312
    filename: 6 creation time: 14:41:26:0
    filename: 7 creation time: 14:41:26:0
    filename: File1.obj creation time: 8:28:50:953
    filename: Project1.#00 creation time: 8:28:49:921
    filename: Project1.exe creation time: 8:28:53:125
    filename: Project1.map creation time: 8:28:54:46
    filename: Project1.pch creation time: 8:28:49:921
    filename: Project1.tds creation time: 8:28:52:890
    filename: s creation time: 14:27:36:593
    filename: s creation time: 14:27:36:593
    Drücken Sie eine beliebige Taste . . .

    [code]



  • Weiss keiner was ich da falsch mache? 😞



  • Ich habs mal ein wenig umgeschrieben:

    WIN32_FIND_DATA  FileData; 
    HANDLE FindHandle = FindFirstFile("*",&FileData); 
    if(FindHandle!=INVALID_HANDLE_VALUE)
    {
    	do 
    	{
    		if(!((FileData.cFileName[0]== '.' ) && ((FileData.cFileName[1] == '.' && FileData.cFileName[2]==0) || FileData.cFileName[1]==0)))
    		{
    			SYSTEMTIME sysTime,local; 
    			FileTimeToSystemTime( &FileData.ftCreationTime, &sysTime ); 
    			SystemTimeToTzSpecificLocalTime(NULL, &sysTime, &local);
    			ostringstream os;
    			os	<< setfill('0')
    				<< setw(2) << local.wDay << "." << setw(2)<<local.wMonth << "." << local.wYear << ","
    				<< setw(2) << local.wHour << ":" << setw(2)<<local.wMinute << ":" << setw(2)<<local.wSecond
    				<< "\t\t" << FileData.cFileName;
    			cout << os.str() <<'\n'; 
    		}
    	} 
    	while(FindNextFile(  FindHandle , &FileData )); 
    }
    


  • @HeinerEiner es ging nicht um die Formatierung ...
    Aber egal ich glaub ich habe es jetzt:

    time = FileDataNext.ftLastWriteTime;

    Wenn ich ftLastWriteTime benutze dann passt alles.



  • Vielleicht ist das System nicht so genau? Schon mal manuell in die Dateieigenschaften geguckt, ob dort der Unterschied vorhanden ist?


Anmelden zum Antworten