Jo, det søger kun på C:
Du kan få det til at søge på alle drev:
#include <string>
#include <string.h>
#include <iostream>
#include <windows.h>
std::string FindFile(const std::string& aDir, const std::string& aName)
{
WIN32_FIND_DATA FindData;
HANDLE FindHandle = FindFirstFile((aDir + "\\\\*").c_str(), &FindData);
do
{
if(FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(strcmp(FindData.cFileName, ".") && strcmp(FindData.cFileName, ".."))
{
std::string Temp = FindFile(aDir + "\\\\"+ FindData.cFileName, aName);
if(!Temp.empty())
return Temp;
}
}
else if(!stricmp(FindData.cFileName, aName.c_str()))
{
return aDir + "\\\\" + FindData.cFileName;
}
}
while(FindNextFile(FindHandle, &FindData));
FindClose(FindHandle);
return "";
}
int main()
{
char Buffer[1024], *s = Buffer;
GetLogicalDriveStrings(sizeof(Buffer), Buffer);
while(*s)
{
std::string Drive = s;
Drive = Drive.substr(0, Drive.size() - 1);
std::cout << Drive << std::endl;
std::cout << FindFile(Drive, "win.ini") << std::endl;
while(*s)
s++;
s++;
}
}
Nu returnerer FindFile en std::string, den bør kunne konverters til en AnsiString, evt via en const char * som du får med std::string's c_str().