• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:vb6の初心者です。特定の文字について)

VB6初心者のためのファイル名の命名規則についての質問

このQ&Aのポイント
  • VB6初心者がファイル名の命名規則について質問しています。
  • 特に、ファイル名に使用できない文字や、その文字を認識させる方法について知りたいようです。
  • 質問者は、使用するワイルドカード文字が文字として認識されず、どのように修正すればいいかを教えて欲しいとお願いしています。

質問者が選んだベストアンサー

  • ベストアンサー
  • PrintScree
  • ベストアンサー率25% (538/2091)
回答No.4

#2さんのアドバイスで一つ思い浮かびましたが、こういう事ですか? Char(Asc("*"))  ← * (アスタリスク) Char(Asc("?"))  ← ? (クエスチョン) Char(Asc("""")) ← " (ダブルクォーテーション) Char関数とアスキーコードを使用すれば「: * ? \ / | < > : "」を表現できます。

ponzuman
質問者

お礼

ご回答ありがとうございます。 ソース上わかりやすい記述ですね。 参考にさせていただきます。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんばんは。 方法は、いくらでもあるのではないでしょうか? 今のところ、私は、主に、VBAを扱うので、その場合は、まったく違う方法なので、あまり考えたことがありませんが、Like 演算子でも出来ますし、InStr() でも、以下のようなコードにしてもよいし、API の PathGetCharType を使ってもできると思います。 つまり、戻り値が、GCT_INVALID ,GCT_SEPARATOR ,GCT_WILD の時ですね。 Dim strFileName As String   Dim t As String   Dim i As Integer   strFileName = Text1.Text   If strFileName = "" Then    MsgBox "ファイル名がありません。"    Exit Sub   End If   For i = 1 To Len(strFileName)    t = Mid$(strFileName, i, 1)    If LenB(StrConv(t, vbFromUnicode)) > 1 Then      MsgBox "全角文字です。  " & t      Else      Select Case t       Case "*", "?", "\", "/", "|", "<", ">", ":", """"         MsgBox "ファイル名が正しくありません!" & t         Exit Sub      End Select    End If   Next End Sub

ponzuman
質問者

お礼

ご回答ありがとうございます。 初心者なので試行錯誤にやっているので、すぐにこのような方法を思いつきませんでした。 一文字一文字検索していく方法もありますよね。 この書き方あるのは知りませんでした。「""""」 参考にさせていただきます。

すると、全ての回答が全文表示されます。
  • PrintScree
  • ベストアンサー率25% (538/2091)
回答No.3

やっぱり言わんとしていることが分かりません(^^; もう少し補足していただけますか? プログラムとは、ほぼ例外なく「入力」があって「出力」があるわけですが、 >でも一番知りたいのは*(アスタリスク)を文字として認識させたいのです。 >普通に使ってしまうとワイルドカードとして認識されてしまいます。 >"*goo*" ←任意の文字列 と goo と 任意の文字列 >"***"  ←任意の文字列 と 任意の文字列 と 任意の文字列 >"*"   ←任意の文字列 >となってしまいます。 この場合、どのようなことを行って、どのような結果を望んでいるのでしょうか?一番知りたいと言っていることがよくわかりません(汗; ファイル名に ? や * を使いたいわけではないですよね? この中の「普通に使ってしまう」というのはどういう使い方ですか? Open "*goo*" For Output As #1 と言う使い方ですか? それとも Dir("*goo*") と言う使い方でしょうか? やりたいことを相手に正確に伝えるテクニックというのもプログラマやSEの重要な資質ですよ。 箇条書きでも構わないので、やりたいことを列挙してみてください。

ponzuman
質問者

お礼

たびたびすいません。 初心者なもので、勉強させていただきます。 目的: テキストボックスにファイル名を入力して、コマンドボタンをクリックしたとき、正しいファイル名か判断するプログラム。(拡張子は抜き) 処理内容: ファイル名の命名規則に反することがあれば、エラーメッセージを返す。 それ以外はOKメッセージを返す。 質問したいこと: ファイル名が正しいか判断するには、ワイルドカードである文字(*、?)なども識別して、判断したいのです。 例えばファイル名の中に?文字がどこかに含まれていないか判断するためには"*?*"を使い判断します。 if 0 <> InStr(strFileName, "*?*") then  ' ファイル名に?が含まれていたらエラー しかし、結果としては?を文字として認識してくれてないみたいです。 ですので、ワイルドカードで使われる文字をただの文字として認識してくれる記述方法が見つかればと思い質問いたしました。 おわかりいただけたでしょうか。 すいません、説明がへたくそで…。

すると、全ての回答が全文表示されます。
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

chr(42)で * を表現できますよ。instr関数内で使用可。 VB6が無くても、EXCEL2000以降のVBEで試験はできますよ。

ponzuman
質問者

お礼

ご回答ありがとうございます。 なるほど! chr(xx)で指定してやればいいのですね。 Officeがあるので、早速試してみたいと思います。

すると、全ての回答が全文表示されます。
  • PrintScree
  • ベストアンサー率25% (538/2091)
回答No.1

イマイチ言わんとしていることが分からないのですが… strFileName変数の中にファイル名で使用できない文字が含まれているかを調べたいんですよね? 単純に考えると、InStr関数を使えばいいのでは? 今VBを使える環境がないので、InStr関数はヘルプで調べてください。

ponzuman
質問者

お礼

ご回答ありがとうございます。 わかりづらい文章ですいません。 InStr関数でもいけそうですね!ありがとうございます。 申し訳ありませんが、私も今、使える環境ではないのでわかりません。(他のマシンなので) でも一番知りたいのは*(アスタリスク)を文字として認識させたいのです。 普通に使ってしまうとワイルドカードとして認識されてしまいます。 "*goo*" ←任意の文字列 と goo と 任意の文字列 "***"  ←任意の文字列 と 任意の文字列 と 任意の文字列 "*"   ←任意の文字列 となってしまいます。 *、?、"、などを「文字」として認識させるにはどーすればいいのでしょうか。

すると、全ての回答が全文表示されます。

関連するQ&A