tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルiniFile名のみの取得について
記事No12174
投稿日: 2008/05/01(Thu) 17:24
投稿者回鍋
VB6 iniFileについて質問させてください

'iniFileの確認
    If Dir(fileName) = ○○ Then

fileNameはConstでiniFile名を固定しています。
○の部分にiniFile名のみを取得したいのですが、取得方法がわかりません
簡単な質問かもしれないで申し訳ないのですが、行き詰まっています。
どうか知恵を貸してください。

[ツリー表示へ]
タイトルRe: iniFile名のみの取得について
記事No12175
投稿日: 2008/05/01(Thu) 18:11
投稿者
> 'iniFileの確認
>     If Dir(fileName) = ○○ Then

何をしたいのかがよく判りません。

fileNameで定義されているファイルが存在すれば
Dir関数はそのファイル名を返しますし
存在しなければ長さ0の文字列を返しますから
存在するかどうかを調べるなら戻り値をLen関数にかけて
0なら「存在しない」、1以上なら「存在する」と判断することができるかと。

単純にiniFile名が知りたいというのであれば
fileNameはConstで決まっているのですから
実行前から判っているんじゃ?

[ツリー表示へ]
タイトルRe: iniFile名のみの取得について
記事No12180
投稿日: 2008/05/02(Fri) 00:26
投稿者戸豚
INIファイルということは「ファイルが存在する」ことよりも「値が読み書きできる」ことが重要ではないですか?
ファイル名も固定ならばWindowsAPIのGetPrivateProfileString/WritePrivateProfileStringだけでことが足りると思いますよ。

キーの値が読めなければINIファイルが無いかキーが無いかですし、ファイルが無いのもキーが無いのも同じことですから。

[ツリー表示へ]
タイトルRe^2: iniFile名のみの取得について
記事No12182
投稿日: 2008/05/02(Fri) 09:18
投稿者回鍋
琴さん、戸豚さん、ご回答ありがとうございます。
説明が悪くて申し訳ないのですが、iniFileを定義(const fileName As String = ""で固定)だった場合についてなんですが,
GetINIValueでFile名(仮にc:\File.ini)みたいに取得できますでしょうか?

[ツリー表示へ]
タイトルRe^3: iniFile名のみの取得について
記事No12184
投稿日: 2008/05/02(Fri) 09:31
投稿者GOD
> 琴さん、戸豚さん、ご回答ありがとうございます。
> 説明が悪くて申し訳ないのですが、iniFileを定義(const fileName As String = ""で固定)だった場合についてなんですが,
> GetINIValueでFile名(仮にc:\File.ini)みたいに取得できますでしょうか?
>
INIファイル名の生成法則はどうなってるの。
定義が "" の時は必ず "c:\File.ini" になる?
GetINIValue は自作のプロシージャ?(少なくてもMSDNライブラリではHITしなかった。)

[ツリー表示へ]
タイトルRe^4: iniFile名のみの取得について
記事No12186
投稿日: 2008/05/02(Fri) 12:51
投稿者回鍋
> INIファイル名の生成法則はどうなってるの。

> 定義が "" の時は必ず "c:\File.ini" になる?
ならないです。この時にファイル名を取得したいのですが。
> GetINIValue は自作のプロシージャ?(少なくてもMSDNライブラリではHITしなかった。)
GETINIValue=("キー", "セクション", App.Path & "ファイル名")
という風にキーを取得する為に作りました。
キー、は取得できるのですが、ファイル名が取得できません。

[ツリー表示へ]
タイトルRe^5: iniFile名のみの取得について
記事No12187
投稿日: 2008/05/02(Fri) 13:23
投稿者GOD
> > INIファイル名の生成法則はどうなってるの。
>
> > 定義が "" の時は必ず "c:\File.ini" になる?
> ならないです。この時にファイル名を取得したいのですが。
>
ファイル名ってどんな名前を取得したいですか。
「??????.ini」を取得すると想定した場合、「??????」の部分に何が入っていると理想的な動
きなの?

[ツリー表示へ]
タイトルRe^6: iniFile名のみの取得について
記事No12188
投稿日: 2008/05/02(Fri) 13:50
投稿者回鍋
> ファイル名ってどんな名前を取得したいですか。
> 「??????.ini」を取得すると想定した場合、「??????」の部分に何が入っていると理想的な動
> きなの?

作成されたiniFileです。無い場合は機能が終了した時点でiniFileを自動作成するようにはしています。
でも、次に起動した時その作成したiniFileを取得する方法がわかりません。
キーを取得する感じでiniFileも取得できると思っていたのですが。フルパスではなくファイル名のみなんですが。

[ツリー表示へ]
タイトルRe^7: iniFile名のみの取得について
記事No12190
投稿日: 2008/05/02(Fri) 14:07
投稿者nobu
> 作成されたiniFileです。無い場合は機能が終了した時点でiniFileを自動作成するようにはしています。

自分のソフトで「自動作成」しているならば分かるのではありませんか?

> でも、次に起動した時その作成したiniFileを取得する方法がわかりません。
> キーを取得する感じでiniFileも取得できると思っていたのですが。フルパスではなくファイル名のみなんですが。

「自動作成」しているならばフルパスも分かっているはずだし
そこからファイル名のみ抜き出せば良いだけの話では?

フルパスを Split 関数を使い \ で分割しても求められるでしょうし

ここのホームページの
「カテゴリ別一覧」「FileSystemObject オブジェクト関係」
「Folderオブジェクト・パス等の取得」
下記の例の様に取得して見たら如何ですか?

Case 1 '指定されたファイル又はフォルダの名前を設定・取得
      Set FsoFile = Fso.GetFile(App.Path & "\Sample.txt")
      Label1.Caption = "このファイルは " & FsoFile.Name & _
                      " です。"
      '結果:このファイルは sample.txt です。

[ツリー表示へ]
タイトルRe^8: iniFile名のみの取得について
記事No12191
投稿日: 2008/05/02(Fri) 15:30
投稿者回鍋
nobu、さんご回答ありがとうございます。

ファイル名だけ取得する事ができました。
連投なんですが、ファイル名が存在しないNothing時にすぐエラーに飛んでいくのですが、
エラーに飛ばずに、別の処理へ移すにはどうしたらいいでしょうか?

iniPath As File

Set iniPath = Fso.GetFile(App.Path & "\File.ini")
で取得させました。

[ツリー表示へ]
タイトルRe^9: iniFile名のみの取得について
記事No12193
投稿日: 2008/05/02(Fri) 16:02
投稿者nobu

> ファイル名だけ取得する事ができました。
> 連投なんですが、ファイル名が存在しないNothing時にすぐエラーに飛んでいくのですが、
> エラーに飛ばずに、別の処理へ移すにはどうしたらいいでしょうか?

こう言うことですか?

'ファイルが存在する時のみ実行する
If Dir(App.Path & "\File.ini") <>"" Then    
      Set iniPath = Fso.GetFile(App.Path & "\File.ini")
End If

[ツリー表示へ]
タイトルRe^9: iniFile名のみの取得について
記事No12194
投稿日: 2008/05/02(Fri) 16:19
投稿者るしぇ
頭の中でオブジェクトと文字列の区別ができてないのでは?

それは現実世界で例えれば、はがきに書いた住所と、その住所に
建っている家の区別が出来ないということですよ。
つまり、はがきの表面にドアがないか探すようなものです。

>iniPath As File
新入社員がこんなコードを書いてきたら、即没にしますが。

[ツリー表示へ]
タイトルRe^10: iniFile名のみの取得について
記事No12195
投稿日: 2008/05/02(Fri) 17:50
投稿者回鍋
nobuさん、るしぇさん
ご指導ありがとうございます、解決できました。
> >iniPath As File
> 新入社員がこんなコードを書いてきたら、即没にしますが。
勉強なりました、精進します。

[ツリー表示へ]