2011-10-02 5 views
0

이 오류가 발생하며이를 수정할 수 없습니다. 어떤 도움을 주셔서 감사합니다. 감사. 오류 C2440 '=' "DWORD *"타입 "부호 INT"의 엔티티에 할당 될 수DWORD 및 부호없는 정수

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; 
} 

형식의 값 : "부호 INT ' 인텔리에'DWORD의 * '로 변환 할 수없는 그는이 라인에 .....

답변

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

빙고! 고맙습니다! –

관련 문제