喫茶XRAYトップページ

[スレッド全体
]

[5669] Re2:DirectoryExistsの動作について返信 削除
2012/1/23 (月) 21:24:12 Mr.XRAY
こんなコードで簡単なテストしてみましたが,

procedure TForm1.Button1Click(Sender: TObject);
var
  ADir : String;
begin
  ADir := 'L:\AAA';
  if SysUtils.DirectoryExists(ADir, True) then begin
    ShowMessage('AAAAA');
  end;
end;

L:\AAA 内のファイルを表示したりして,閉じて,USBを抜いて実行
しましたが,ShowMessageは表示されませんでした.
Windows XP(SP3) + Delphi XE です.

SysUtils.DirectoryExists
http://docwiki.embarcadero.com/VCL/ja/SysUtils.DirectoryExists

やっぱキャッシュ関係なのかな?


[5672] Re3:DirectoryExistsの動作について返信 削除
2012/1/23 (月) 22:05:45 Sara
▼ Mr.XRAYさん

ご苦労様です。m(_ _)m

> L:\AAA 内のファイルを表示したりして,閉じて,USBを抜いて実行
> しましたが,ShowMessageは表示されませんでした.
> Windows XP(SP3) + Delphi XE です.
>
> SysUtils.DirectoryExists
> http://docwiki.embarcadero.com/VCL/ja/SysUtils.DirectoryExists
>
> やっぱキャッシュ関係なのかな?


USBメモリだと大丈夫でしょうね・・・(試していないけど・・・)

問題なのは、カードリーダーにメモリカードを刺した状態でテストした後に、
メモリカードのみを抜いて実行すると、カードリーダーは存在しているので、
ドライブレターがそのまま残っているところに問題があるんでしょう・・・
FDDと同じような状況だけど、FDDでも起きるのかな・・・
(FDD無いから試せないけど・・・)

あぁ、そうだ DVD-RAMで試してみよう・・・

   *** 実験中 ***

DVD-RAMにフォルダーを1つ作って画像を数枚いれて実行した後に、
メディアをイジェクトして再度実行したら・・・
同じ状況になった・・・

やはり、どこかでキャッシュをクリアする必要があるようだ・・・
でも、どうやって?



[5673] Re4:DirectoryExistsの動作について返信 削除
2012/1/23 (月) 22:53:11 Sara
みなさん こんばんは。

ちょっと、関数をこしらえてみました。

function FolderExists(Value : String):Boolean;
var
  P: PWideChar;
  NewPIDL: PItemIDList;
  Flags,
  NumChars: LongWord;
  sf : IShellFolder;
begin
  Result := False;
  NumChars := Length(Value);
  Flags := 0;
  P := StringToOleStr(Value);
  try
    SHGetDesktopFolder(sf);
    Result := Succeeded(sf.ParseDisplayName(0, nil, P, NumChars, NewPIDL, Flags));
  except
    on EOleSysError do exit;
  end;
end;

これなら、期待どおりの動作をするようですが、どうなんでしょう?

やっていることに問題がなければ、こちらを使おうかと・・・

添削をお願いいたします。m(_ _)m

[5674] Re5:DirectoryExistsの動作について返信 削除
2012/1/23 (月) 23:00:38 Mr.XRAY
▼ Saraさん

なるほど,項目識別子というわけですか.
Saraさんの常用バージョンって,Delphi 2010でしたっけ.
常連さんのバージョンを把握しきれていない! スンマセン.


[5675] Re6:DirectoryExistsの動作について返信 削除
2012/1/23 (月) 23:17:14 Sara
▼ Mr.XRAYさん
 
> なるほど,項目識別子というわけですか.
> Saraさんの常用バージョンって,Delphi 2010でしたっけ.
> 常連さんのバージョンを把握しきれていない! スンマセン.


おっと 失礼しました。

環境を書くのをすっかり失念していましたね・・・(^^;

Windows7 64Bit + Delphi XE2がデフォルトです。

たまにWindowsXP + Delphi2007のときもあります・・・

[5676] Re7:DirectoryExistsの動作について返信 削除
2012/1/24 (火) 00:26:30 Mr.XRAY
▼ Saraさん

> 環境を書くのをすっかり失念していましたね・・・(^^;

いえ,別に関係ないんですけど.(^^;

> Windows7 64Bit + Delphi XE2がデフォルトです。

えっ,何時の間に...
コードですけど,ちょっと気になるところがあったので,後で確認させて
ください.
動作には関係ないことなんですが...


[5678] Re8:DirectoryExistsの動作について返信 削除
2012/1/24 (火) 09:08:58 Sara
▼ Mr.XRAYさん

> > Windows7 64Bit + Delphi XE2がデフォルトです。
>
> えっ,何時の間に...


ん? [5328] XE2 バージョン情報の取得にて
のあたりからですが?(^^;

> コードですけど,ちょっと気になるところがあったので,後で確認させて
> ください.
> 動作には関係ないことなんですが...


お手数をおかけします。m(_ _)m

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82