長い形式のファイルパスを取得する
長い形式のファイルパスを取得するには、GetLongPathName関数を使います。この関数は、Windows
98以降で使用可能です。例えば、次のようにします。
//---------------------------------------------------------------------------
#include <Utilcls.h>
#include <mbstring.h>
//---------------------------------------------------------------------------
const char* FileNameWildcards = "*?";
//---------------------------------------------------------------------------
AnsiString __fastcall GetLongFilePath(AnsiString AFilePath)
{
if(AFilePath.Length() >= MAX_PATH || _mbspbrk(AFilePath.c_str(), FileNameWildcards) != NULL) {
return AnsiString();
}
const DWORD bufferSize = MAX_PATH;
TAPtr<TCHAR> buffer = new TCHAR[bufferSize];
const DWORD stringLength = GetLongPathName(AFilePath.c_str(), buffer, bufferSize);
if(stringLength == 0 || stringLength > bufferSize) {
return AnsiString();
}
return AnsiString(buffer, stringLength);
}
//---------------------------------------------------------------------------
最終更新: 2008-07-05
戻る