« *ist DS の後継機は K-7 で決まり! | トップページ | 考える葦 »

2009.05.31

GetFolderItem とショートカットの微妙な関係

IMGP6199REALbasic でファイルやフォルダーを扱う場合、必ずお世話になるのが FolderItem クラス。このクラスを使いこなせれば、どんなファイル操作も可能になります。でも、Windows のショートカットを扱う場合には、少しだけ注意が必要です。

IMGP6199

PENTAX *ist DS + smc PENTAX-DA 21mm F3.2 AL Limited

Mac にはエイリアスという概念があります。Windows にはショートカットという概念があります。ほぼ同じものだと思ってもらえれば良いのだけれど、REALbasic の FolderItem の扱いとなると微妙に動作が違います。ファイルを扱う場合、良く使われるのが GetFolderItem() というメソッド。

IMGP6202

PENTAX *ist DS + smc PENTAX-DA 21mm F3.2 AL Limited

引数にはディテクトリをフルパスで指定します(起動しているアプリケーションと同じフォルダならファイル名だけで OK)。このメソッド、ヘプルには「GetFolderItem automatically resolves aliases when filename represents an alias. To prevent this, use GetTrueFolderItem.」と書かれています。

IMGP6198

PENTAX *ist DS + smc PENTAX-DA 21mm F3.2 AL Limited

つまり、指定されたファイルがエイリアスだった場合、GetFolderItem() はそれを理解してオリジナルのファイルを参照してくれるのです。とても便利なのだけれど、これ、Windows ではちゃんと動作してくれません。それは、見えているファイル名と実際のファイル名が違うから。

IMGP6217

PENTAX *ist DS + smc PENTAX-DA 21mm F3.2 AL Limited

Windows でショートカットを作成すると、「〜のショートカット」というファイル名になります。Mac では「〜のエイリアス」です。付加された文字列の部分を削除すると、エイリアスファイルもショートカットファイルも、もとのファイルと同じファイル名になりますね。

IMGP6208

PENTAX *ist DS + smc PENTAX-DA 21mm F3.2 AL Limited

これを GetFolderItem() で参照すると、不思議なことに、Mac ではちゃんともとのファイルが得られるのに、Windows では nil が返ってくる。つまり、そんなファイルは存在しないぞと怒られるのです。ファインダーで見るとファイル名は間違っていないし、ファイルも確かにそこにある。

IMGP6222

PENTAX *ist DS + smc PENTAX-DA 21mm F3.2 AL Limited

実は、Windows のショートカットファイルは「.lnk」という拡張子が付いていて、標準では見えないようになっています。それはそれで構わないのだけれど、GetFolderItem() がせっかくエイリアスを解決してくれるというのに、ファイル名を「.lnk」付きで指定してしまっては元も子もありません。

IMGP6204

PENTAX *ist DS + smc PENTAX-DA 21mm F3.2 AL Limited

エイリアスがもとのファイルと同じファイル名で、同じプログラムでアクセスできるから便利なのであって、最初からエイリアスだと分かって処理するのなら何のことはない。OS の考え方の違いだけれど、この点については Mac OS の方がいいと思う。ファインダーは WYSWYG であるべきだと思うのです。

IMGP6224

PENTAX *ist DS + smc PENTAX-DA 21mm F3.2 AL Limited

週末に飲んだビールが美味しかったので、思わず写真を撮ってしまいました。アサヒビールの「ザ・マスター」、缶ビールなのに泡がとてもクリーミー、味もドイツ仕込みということで、しっかりとしていてコクがありました。ホッピーも飲みたいのだけれど、いつものジャスコにはもう置いてないんだよなぁ。

IMGP6229

PENTAX *ist DS + smc PENTAX-DA 21mm F3.2 AL Limited

|

« *ist DS の後継機は K-7 で決まり! | トップページ | 考える葦 »

REALbasic」カテゴリの記事

グルメ・クッキング」カテゴリの記事

写真」カテゴリの記事

日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/82331/45196878

この記事へのトラックバック一覧です: GetFolderItem とショートカットの微妙な関係:

« *ist DS の後継機は K-7 で決まり! | トップページ | 考える葦 »