画像の有無を調べる?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
チルチル

画像の有無を調べる?

#1

投稿記事 by チルチル » 16年前

自重すると言っておきながら質問してしまってすいません・・

DXライブラリを使用しているのですが

画像名を引数として渡すと画像が存在するかが返ってくる関数などは無いでしょうか?

pooka

Re:画像の有無を調べる?

#2

投稿記事 by pooka » 16年前

access関数を利用してみてはどうでしょうか?
char *fname = "test.png";
if(access(fname,0) != 0)
	printf("%sは存在しません。\n",fname);
使い方としてはこんなかんじでしょうか。

参考サイト
ttp://www.orchid.co.jp/computer/cschool/CREF/access.html

チルチル

Re:画像の有無を調べる?

#3

投稿記事 by チルチル » 16年前

多分access関数で大丈夫だと思います

どうもありがとうございました

チルチル

Re:画像の有無を調べる?

#4

投稿記事 by チルチル » 16年前

と思ったんですが
access関数はどのヘッダファイルを読み込めば使えるのでしょうか?

一応自分でも「C++ access関数」とかで検索してみたのですが
書いてあるサイトが見つからなかったので・・

ねこ

Re:画像の有無を調べる?

#5

投稿記事 by ねこ » 16年前

とりあえずOpenFileかCreateFileあたりで検索してみると良いよ

Justy

Re:画像の有無を調べる?

#6

投稿記事 by Justy » 16年前


>access関数はどのヘッダファイルを読み込めば使えるのでしょうか?

 VisualStudio2008なら io.hにあります。
 ただし、関数名はちょっと異なりますが。


※ ネットで見つからないなら、ヘッダを grepして探しましょう。

tk-xleader

Re:画像の有無を調べる?

#7

投稿記事 by tk-xleader » 16年前

Windows APIを使ってもよいのなら、shlwapi.hにこんな関数があります。

BOOL PathFileExists(LPCTSTR pszPath);

↓が参考です、英語ですが。
http://msdn.microsoft.com/en-us/library/bb773584(VS.85).aspx

チルチル

Re:画像の有無を調べる?

#8

投稿記事 by チルチル » 16年前

OpenFileとCreateFileで検索して
「atlfile.h」と言うヘッダが見つかりましたが違ったようです・・

ちなみに「ヘッダを grep」とはどういうことでしょうか?

「Windows API」はまだ使えそうにありません・・
あと英語無理でした・・

tk-xleader

Re:画像の有無を調べる?

#9

投稿記事 by tk-xleader » 16年前

ヘッダをgrepとは、簡単に言えば検索のことです。(UNIX系のOSでは、ファイル内テキスト検索のコマンド名はgrep。)

Windows APIは使えないと言いますが、そんなに難しくありませんよ、普通に、

#include<shlwapi.h>

を書いて、DXライブラリ関数の呼び出しと同じように、

PathFileExists("tekitou.png");

と呼び出せばいいです。戻り値がTRUEなら存在する、FALSEなら存在せずです。

後、個人的にはaccess関数は避けておいたほうがいいのではないかなと思います。<io.h>の関数は、環境への依存度が大きいからです。(PathFileExistsは、Windows APIが使えるところならば大抵使える。)

チルチル

Re:画像の有無を調べる?

#10

投稿記事 by チルチル » 16年前

あ~なるほど環境への依存度も考えたほうが良いんですね

Windows APIは言語の一種か何かと思っていましたが
意外と身近なものだったんですね・・

多分これで行けると思うので試してみます

ところで少し表題からずれますが

①ヘッダファイルの中身って結構いろいろ書かれているようですが
ヘッダファイルを読み込むだけでそれなりに実行ファイルの容量が増えるのでしょうか?

②DxLib.h以外のヘッダってどこにあるんでしょうか?

チルチル

Re:画像の有無を調べる?

#11

投稿記事 by チルチル » 16年前

やってみたんですが

access関数を使った処理の方は見た感じ問題なく動いたのですが

PathFileExists関数を組み込んだ関数を呼び出すと

Error: 外部シンボル 'PathFileExistsA' が未解決(D:\新しいフォルダ\データ\RESISTANCE\パソコン部\AA.CPP\DEBUG\AA.OBJ が参照)

と言うエラーが出ます・・

これはどういう意味なんでしょうか・・?

ねこ

Re:画像の有無を調べる?

#12

投稿記事 by ねこ » 16年前

使ったことないから勘ですが
#pragma comment( lib, "shlwapi.lib" )
をincludeのあとに入れたらコンパイル通るかも?

基本的に未解決ってのはライブラリがリンクされていない時に出るエラーです。

<ファイル容量
当然増えます。気にする程じゃないですが。

<ヘッダの場所
適当に<math.h>とか書いて右クリックして「ドキュメントを開く」押したらタブが開くので
タブにカーソル当てたらフルパス見れますよ

チルチル

Re:画像の有無を調べる?

#13

投稿記事 by チルチル » 16年前

>>コンパイル通るかも?

通りました、どうもありがとうございます

>>当然増えます。気にする程じゃないですが

たしかにDxLib.hが187KB程度ですから大して増えなさそうですね

>>適当に<math.h>とか書いて

BCCでやってみましたができませんでした・・
どこに書けばいいのでしょうか?

tk-xleader

Re:画像の有無を調べる?

#14

投稿記事 by tk-xleader » 16年前

BCCをどこにインストールしたかにもよりますが、C:\borland にインストールしたのであれば、
C:\borland\bcc55\Include
というところにあります。

後、
>Windows APIは言語の一種か何かと思っていましたが
>意外と身近なものだったんですね・・

Windows APIは、Windows本体そのもののようなものです。Windowsであれば必ず存在します。

チルチル

Re:画像の有無を調べる?

#15

投稿記事 by チルチル » 16年前

たしかにありますね、結構たくさんある・・

>>Windowsであれば必ず存在します

って事はWindows以外のOSだと使えないんでしょうか?

ねこ

Re:画像の有無を調べる?

#16

投稿記事 by ねこ » 16年前

<って事はWindows以外のOSだと使えないんでしょうか?
意識してないと思いますが質問の意味が広義すぎます。
Windows以外のOSで動かないといけないものを作っているのですか?

まず検索してWindows APIがどういうものか調べた後
自分にとって不都合を感じる点があったらそこに焦点を当てて再度質問して下さい。

チルチル

Re:画像の有無を調べる?

#17

投稿記事 by チルチル » 16年前

そういえば広義ですね
主語が抜けてる・・

とりあえず独立的な処理に使っているので
不具合が出てから直しても問題なさそうですね

では解決にしておきます

どうもありがとうございました

yu

Re:画像の有無を調べる?

#18

投稿記事 by yu » 16年前

横から入ってきてすみません;
同じ類の質問で少し気になったので・・・。

以前自分は、データがあるかないかを判定するときに
fopen関数がファイルオープンを失敗したときにNULLポインタを返してくることを利用して
そのデータの有無を判定していたのですが、
これは危険なのでしょうか?

Justy

Re:画像の有無を調べる?

#19

投稿記事 by Justy » 16年前


>fopen関数がファイルオープンを失敗したときにNULLポインタを返してくることを
>利用してそのデータの有無を判定していたのですが

 fopenの戻り値ではファイルが存在するかどうかは判りません。
 判るのはそのファイルに対して読み込み・書き込みなどアクセスできるかどうか、です。

 ファイルが無ければ fopenは勿論失敗しますが、ファイルがあっても
そのファイルへのアクセス権がなかったりしても失敗します。

 具体的にはファイルに Read Only属性がついているのに書き込みモードで開こうとした場合や
セキュリティ的にアクセス権がない場合、別のスレッド・プロセスでそのファイルが
使用中である(ロックされている)場合などがあります。

 そのほか、環境的な問題や実装上の内部的な事情によっても失敗することはありますので、
(読み書きできるかどうかは関係なく)ファイルの有無だけが知りたい場合には
不適切といえますね。

yu

Re:画像の有無を調べる?

#20

投稿記事 by yu » 16年前

そういえばexcelでファイルを開いているとfopenで失敗したことがありました;

今は Windows API が使えない環境でゲームを作っていますので PathFileExists が使えません・・・

ゲームをやっているときはファイルを開いたりはしないので(環境の方もそのハードで動くだけで良いので
少々危険ですがfopenで妥協することにします

どうもありがとうございました m(_ _)m


後、こちらのほうに色々なやり方がまとめて答えてありました (fopenの方法もあって驚きました
ttp://oshiete1.goo.ne.jp/qa3399080.html

チルチル

Re:画像の有無を調べる?

#21

投稿記事 by チルチル » 16年前

>>fopen関数がファイルオープンを失敗したときにNULLポインタを返してくることを利用して・・

そういえば私も同じ事やってました・・

>>少々危険ですがfopenで妥協することにします

私もそうする事にします・・

閉鎖

“C言語何でも質問掲示板” へ戻る