D7で、以下のようにあるフォルダーに画像ファイルが無ければ
画像保守用のフォームを開かないようにする為に、FileExistsで 指定したファイル名にマスク文字を使用していました。
// 画像格納フォルダーに、画像データが全く無い場合 フォームを開かない
if FileExists(DM1.gazou_dir + '\*.jpeg') or
FileExists(DM1.gazou_dir + '\*.jpg') or
FileExists(DM1.gazou_dir + '\*.gif') then begin
F_Picter_mente := TF_Picter_mente.Create(Application);
try
(省略)
このソースをD2007へ持っていくと 画像ファイルが存在しても
Falseになってしまいます。(マスクが使えない?)
ファイルを全てチェックすれば良いのでしょうが、他に方法は無いでしょうか?
D7 と D2007 をもっているのならば ソースを見比べてみよう!
D7 の FileExists は FileAge を使っています
(内部でFindFirstFileを使用している)
のでマスクが有効ですが
BDS2006 では GetFileAttributes を使用していますので
マスクは有効ではありません
D2007 も同様でしょう
こんな感じな関数を作ればOKかな
function FileExists(Path:String):Boolean;
var
SearchRec: TSearchRec;
begin
Result := False;
if FindFirst(Path,faAnyFile,SearchRec) = 0 then Result := True;
if SearchRec.Attr and faDirectory = faDirectory then Result := False;
if SearchRec.Attr and faVolumeID = faVolumeID then Result := False;
FindClose(SearchRec);
end;
function DirecotryExists(Path:String):Boolean;
var
SearchRec: TSearchRec;
begin
Result := False;
if FindFirst(Path,faAnyFile,SearchRec) = 0 then Result := True;
if SearchRec.Attr and faDirectory <> faDirectory then Result := False;
FindClose(SearchRec);
end;
KHE00221さん ありがとうございます。
ソース見てみました。
宝の持ち腐れと言うやつですね、猛反です。
サンプルソースまで提示いただきありがとうございました。
やりたいことができました。
ツイート | ![]() |