![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
よろしくお願いします。
私はVB6の初心者です。
かなり初歩的な質問ですが、聞いてください。
ファイル名の命名規則を識別するプログラムを組みたいのですが、
*(アスタリスク)など、ファイル名として使えない決まりがあります。
ファイル名の命名規則に反する文字を調べたいのですが、
*(アスタリスク)などを文字として認識させるにはどうすればいいのでしょうか。
ワイルドカードとして、読み込んでしまうため、文字として読み取ってくれません。
どなたか文字として認識させる記述の仕方がわかる方、いらっしゃいますでしょうか。
ご教授お願いします。
ファイル名に反する文字: * ? \ / | < > : "(以上の9文字)
strFileName ' ファイル名が格納されているString型の変数
if strFileName Like "*?*" Or strFileName Like "***" ...(他の条件)... Then ' 命名規則に反するか
MsgBox "ファイル名が正しくありません!" ' 反しているのでエラー
End If
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
ご回答ありがとうございます。
初心者なので試行錯誤にやっているので、すぐにこのような方法を思いつきませんでした。
一文字一文字検索していく方法もありますよね。
この書き方あるのは知りませんでした。「""""」
参考にさせていただきます。
No.3
- 回答日時:
やっぱり言わんとしていることが分かりません(^^;
もう少し補足していただけますか?
プログラムとは、ほぼ例外なく「入力」があって「出力」があるわけですが、
>でも一番知りたいのは*(アスタリスク)を文字として認識させたいのです。
>普通に使ってしまうとワイルドカードとして認識されてしまいます。
>"*goo*" ←任意の文字列 と goo と 任意の文字列
>"***" ←任意の文字列 と 任意の文字列 と 任意の文字列
>"*" ←任意の文字列
>となってしまいます。
この場合、どのようなことを行って、どのような結果を望んでいるのでしょうか?一番知りたいと言っていることがよくわかりません(汗;
ファイル名に ? や * を使いたいわけではないですよね?
この中の「普通に使ってしまう」というのはどういう使い方ですか?
Open "*goo*" For Output As #1
と言う使い方ですか?
それとも
Dir("*goo*")
と言う使い方でしょうか?
やりたいことを相手に正確に伝えるテクニックというのもプログラマやSEの重要な資質ですよ。
箇条書きでも構わないので、やりたいことを列挙してみてください。
たびたびすいません。
初心者なもので、勉強させていただきます。
目的:
テキストボックスにファイル名を入力して、コマンドボタンをクリックしたとき、正しいファイル名か判断するプログラム。(拡張子は抜き)
処理内容:
ファイル名の命名規則に反することがあれば、エラーメッセージを返す。
それ以外はOKメッセージを返す。
質問したいこと:
ファイル名が正しいか判断するには、ワイルドカードである文字(*、?)なども識別して、判断したいのです。
例えばファイル名の中に?文字がどこかに含まれていないか判断するためには"*?*"を使い判断します。
if 0 <> InStr(strFileName, "*?*") then ' ファイル名に?が含まれていたらエラー
しかし、結果としては?を文字として認識してくれてないみたいです。
ですので、ワイルドカードで使われる文字をただの文字として認識してくれる記述方法が見つかればと思い質問いたしました。
おわかりいただけたでしょうか。
すいません、説明がへたくそで…。
No.1
- 回答日時:
イマイチ言わんとしていることが分からないのですが…
strFileName変数の中にファイル名で使用できない文字が含まれているかを調べたいんですよね?
単純に考えると、InStr関数を使えばいいのでは?
今VBを使える環境がないので、InStr関数はヘルプで調べてください。
ご回答ありがとうございます。
わかりづらい文章ですいません。
InStr関数でもいけそうですね!ありがとうございます。
申し訳ありませんが、私も今、使える環境ではないのでわかりません。(他のマシンなので)
でも一番知りたいのは*(アスタリスク)を文字として認識させたいのです。
普通に使ってしまうとワイルドカードとして認識されてしまいます。
"*goo*" ←任意の文字列 と goo と 任意の文字列
"***" ←任意の文字列 と 任意の文字列 と 任意の文字列
"*" ←任意の文字列
となってしまいます。
*、?、"、などを「文字」として認識させるにはどーすればいいのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UNICODE文字が含まれているかの...
-
ダブルクォーテーションを文字...
-
Accessのクエリで、replace関数...
-
文字列の後ろから必要分だけ削...
-
VBからACCESSのレポートを印...
-
vbsの文字列代入
-
vb.net IVSの漢字を1文字切り...
-
64進数
-
特定のセルが空白だったら、そ...
-
ExcelのINDEXとMATCH関数でスピ...
-
i=cells(Rows.Count, 1)とi=cel...
-
”戻り値”が変化したときに、マ...
-
Excelのセルの色指定をVBAから...
-
セルの結果でマクロ実行
-
DataSetから、DataTableを取得...
-
Excelで指定した日付から過去の...
-
array関数で格納した配列の型を...
-
エクセルマクロで結合セルに格...
-
Excel VBA、 別ブックの最終行...
-
VBA:小数点以下の数字を取得で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのクエリで、replace関数...
-
文字列の後ろから必要分だけ削...
-
C言語について。
-
C言語について。
-
ダブルクォーテーションを文字...
-
UNICODE文字が含まれているかの...
-
文字列にアルファベットが何文...
-
エクセル関数で記号から記号の...
-
strcmp( )関数について教えて...
-
右から何文字目にあるか文字位...
-
URLで使える文字・使えない...
-
VS C++6.0のCString にて先頭1...
-
GetDlgItemTextについて
-
awk で右端の文字を1文字削除...
-
C言語でギリシャ文字は使えます...
-
文字数と単語数を数えるプログラム
-
VB2008 文字列に等間隔にスペ...
-
関数によって、MAX_PATHの値が...
-
PatternSyntaxException
-
vb.net IVSの漢字を1文字切り...
おすすめ情報