2011-10-02 101 views
0

我收到此错误,无法更正它。任何帮助表示赞赏。谢谢。 错误C2440:“=”:不能从“DWORD *”转换为“无符号整型” 智能感知:类型“DWORD *”不能被分配给类型“无符号整型”的实体DWORD和unsigned int

using namespace std; 
typedef vector<WIN32_FIND_DATA> tFoundFilesVector; 
std::wstring LastWriteTime; 
int getFileList(wstring filespec, tFoundFilesVector &foundFiles) 
{ 
WIN32_FIND_DATA findData; 
HANDLE h; 
int validResult=true; 

int numFoundFiles = 0; 
h = FindFirstFile(filespec.c_str(), &findData); 

if (h == INVALID_HANDLE_VALUE) 
    return 0; 

while (validResult) 
{ 
    numFoundFiles++; 
    foundFiles.push_back(findData); 
    validResult = FindNextFile(h, &findData); 
} 
return numFoundFiles; 
} 

void showFileAge(tFoundFilesVector &fileList) 
{ 
    unsigned int fileTime,curTime, age; 
    tFoundFilesVector::iterator iter; 
FILETIME ftNow; 
__int64 nFileSize; 
    LARGE_INTEGER li;  
li.LowPart = ftNow.dwLowDateTime; 
li.HighPart = ftNow.dwHighDateTime; 

CoFileTimeNow(&ftNow); 
    curTime = ((_int64) &ftNow.dwHighDateTime << 32) + &ftNow.dwLowDateTime; 

    for (iter=fileList.begin(); iter<fileList.end(); iter++) 
    { 
    fileTime = ((_int64)iter->ftLastWriteTime.dwHighDateTime << 32) + iter-      >ftLastWriteTime.dwLowDateTime; 

    age = curTime - fileTime; 

    cout << "FILE: '" << iter->cFileName << "', AGE: " << (INT64)age/10000000UL << " seconds" <<  endl; 
    } 
} 

int main() 
{ 
string fileSpec = "*.*"; 
tFoundFilesVector foundFiles; 
tFoundFilesVector::iterator iter; 

int foundCount = 0; 

getFileList(L"*.c??", foundFiles); 
getFileList(L"*.h", foundFiles); 

foundCount = foundFiles.size(); 
if (foundCount) 
{ 
    cout << "Found "<<foundCount<<" matching files.\n"; 
    showFileAge(foundFiles); 
} 
return 0; 
} 

的值它在这条线.....

回答

5

的错误是在这里:

curTime = ((_int64) &ftNow.dwHighDateTime << 32) + &ftNow.dwLowDateTime; 

dwHighDateTimedwLowDateTime已经int类型。然而,你正在考虑他们的地址。因此,分配到curTime变成int指针。

你想是什么:

curTime = ((_int64) ftNow.dwHighDateTime << 32) + ftNow.dwLowDateTime; 

第二期:

curTimefileTime只有32位。你需要使他们成为64位整数。

+0

谢谢!!!!第一个问题解决!我怎样才能使这些64位整数,从来没有处理这个。谢谢。 –

+1

你可以使用'unsigned long long'。但是由于你在Windows上,你可以使用'unsigned __int64'。 – Mysticial

+0

宾果!谢谢! –

相关问题