①ダイアログボックスにファイルカレントディレクトリ配下にあるファイル名が取得設定されない。
②ファイルの種類にゴミ(多分EXEの実行コードと思われる)が付加される。
対象バージョン
AB V05CP4以降
確認環境
WINDOWS 7/HOME SP1
WINDOWS XP
ソースコードを添付しますのでご確認よろしくお願いします。
[ここをクリックすると内容が表示されます]
コード: 全て選択
/**************************/
/* GetOpenFileName テスト */
/**************************/
CONST FILTER = Ex"テキスト ファイル(*.txt)\0*.txt\0すべてのファイル(*.*)\0*\0\0"
DIM OFN AS OPENFILENAME
DIM FILENAME[255] AS Char
'GetOpenFileName テストその1
'ファイル フィルター(lpstrFilter)リテラル指定
'ダイアログボックスにファイルカレントディレクトリ配下にある
'ファイル名が設定される。
FillMemory(VarPtr(OFN),Len(OFN),0)
OFN.lStructSize = Len(OFN)
OFN.hwndOwner = NULL
OFN.lpstrFilter = Ex"テキスト ファイル(*.txt)\0*.txt\0すべてのファイル(*.*)\0*\0\0"
OFN.nFilterIndex = 1
OFN.lpstrFile = FILENAME
OFN.nMaxFile = MAX_PATH
OFN.lpstrTitle = "ファイルを開く"
OFN.Flags = OFN_FILEMUSTEXIST OR OFN_HIDEREADONLY OR OFN_PATHMUSTEXIST
OFN.lpstrDefExt = "*"
IF GetOpenFileName(OFN) <> 0 THEN
MessageBox(NULL,FILENAME,"指定したファイル名",MB_OK)
ELSE
MessageBox(NULL,"ファイル名を指定願います。","GetOpen",MB_OK)
END IF
'GetOpenFileName テストその2
'ファイル フィルター(lpstrFilter)コンスタント指定
'V05CP4/V05CP5でコンパイルすると
'ダイアログボックスにファイルカレントディレクトリ配下にある
'ファイル名が設定さない。
FillMemory(VarPtr(OFN),Len(OFN),0)
OFN.lStructSize = Len(OFN)
OFN.hwndOwner = NULL
OFN.lpstrFilter = FILTER
OFN.nFilterIndex = 1
OFN.lpstrFile = FILENAME
OFN.nMaxFile = MAX_PATH
OFN.lpstrTitle = "ファイルを開く"
OFN.Flags = OFN_FILEMUSTEXIST OR OFN_HIDEREADONLY OR OFN_PATHMUSTEXIST
OFN.lpstrDefExt = "*"
IF GetOpenFileName(OFN) <> 0 THEN
MessageBox(NULL,FILENAME,"指定したファイル名",MB_OK)
ELSE
MessageBox(NULL,"ファイル名を指定願います。","GetOpen",MB_OK)
END IF
END