ページ 11

VC++

Posted: 2009年3月02日(月) 16:52
by ざこ
VC++で拡張子を指定する方法などありますか?例えばテキストファイルだけ開くようにして他(エクセルとか)
では行わないような感じがいいのですが。

Re:VC++

Posted: 2009年3月02日(月) 17:04
by バグ
いまいち、質問の意味がよく分からないのですが?
ファイル選択用のダイアログに表示されるファイルの種類に制限をかけたいという事でしょうか?

Re:VC++

Posted: 2009年3月02日(月) 17:05
by たかぎ
> 拡張子を指定する方法などありますか?

何に対してですか?

> 例えばテキストファイルだけ開くようにして

何で開くのでしょうか?

> 行わないような

行わないとは?

> 感じがいいのですが

感じといわれても、質問者さんと感覚を共有するのは困難です。
もっと具体的かつ客観的に表現してください。

Re:VC++

Posted: 2009年3月02日(月) 17:11
by Mist
http://tts.utopiat.net/bbshowto.html

上記のページを読んで質問内容を具体的にしてください。

Re:VC++

Posted: 2009年3月02日(月) 17:21
by ざこ
これは失礼しました。例えばファイルを開くときにfopenで開きますがそのときにtxtファイルのみ開く
もしくはエクセルxlsのみで開くように拡張子に対して制限というのでしょうか、がしたいです。
if(●●){
fopen()・・
}

のようなイメージかと思うんですが調べても出てこないので質問させていただきました。

Re:VC++

Posted: 2009年3月02日(月) 17:26
by バグ
ファイルパス(おそらく文字列でしょうか?)を調べて、拡張子部が.xlsなどエクセルのファイルの際にのみ開くようにすればいいのでは?

Re:VC++

Posted: 2009年3月02日(月) 17:31
by ざこ
すいません、例えが悪かったので訂正します。今Drag&Dropの勉強をしていてファイルごとに分けるプログラムを
作ってるんです。


拡張子  場所
txt c:\●●
XLS c:\○○

このときにスレ内容のような内容を使うので質問させていただきました。

Re:VC++

Posted: 2009年3月02日(月) 17:33
by non
_findfirstを調べてみたら如何でしょう。

Re:VC++

Posted: 2009年3月02日(月) 17:37
by Mist
WINAPIを使用してもよいのであれば拡張子部分の取得方法は以下のページが参考になると思います。

http://www.dev.pei.jp/programming/sdk/sdk68.html
http://nienie.com/~masapico/api_PathFindExtension.html

Re:VC++

Posted: 2009年3月02日(月) 17:46
by SooA
パスの分割で調べてみましょう。

fnsplit

簡易でいいなら取得した引数の末尾4文字を取り出して
".txt"かどうか判断。

大文字小文字の区別なしで文字列を比較する関数もあるので
調べてみてください。

Re:VC++

Posted: 2009年3月02日(月) 17:46
by バグ
パスから取得するならば、_splitpathなんていう関数もありますね。

Re:VC++

Posted: 2009年3月02日(月) 17:47
by バグ
CString path = "path.txt";
CString ext = path.Delete(0, path.ReverseFind('.') + 1);

MFCならば、こういうのでもいいかも…?

Re:VC++

Posted: 2009年3月02日(月) 17:48
by ざこ
色々ありますね。少し一通りやってみます。