0

ディレクトリにあるファイルを開こうとしています。長さが 127 以上の場合は、常にエラー コード 13 が返されます。

char name[200]="E:\\suri_temp\\abc85\\tool\\src1111\\turi_temp\\abc85\\tool\\src1111\\puri_temp\\abc85\\tool\\src\\nuri_temp\\abc85\\to\\abcd.tmp\\suri1111.log";

int len = strlen(name); //len=127

HFILE handle ;
WORD temp;
OFSTRUCT ofstruct;

if( (handle = OpenFile(name, &ofstruct, OF_EXIST))  ==  HFILE_ERROR )
{
    temp = GetLastError(); // if length 127 or above(it comes here temp = 13)
}
else
_lclose(handle); // if length is below 127 it comes here

誰もこの問題に直面しましたか?

4

2 に答える 2

3

OpenFileに関する MSDNの記事でよく文書化されているものを見つけるのは難しい方法です。

注 この関数は機能が制限されているため、お勧めしません。新しいアプリケーションの開発には、CreateFile 関数を使用します。

OFSTRUCT 構造体には、長さが OFS_MAXPATHNAME 文字 (128 文字) に制限されたパス文字列メンバーが含まれています。このため、OpenFile 関数を使用して、パスの長さが 128 文字を超えるファイルを開くことはできません。CreateFile 関数には、このパスの長さの制限はありません。

示されているように、代わりに CreateFile() を使用してください。

于 2013-01-06T19:28:38.290 に答える
0

使用する

OpenFile(name, &ofstruct, OF_EXIST)) 

デバッグ モードでは問題ありませんが、リリース モードでは失敗します。使用する

if(GetFileAttributes("filename") == -1)
于 2013-01-06T18:51:09.260 に答える