画像をImageに呼び出し,テキストボックスにそのファイル名を表示する
ようにしています。
その表示の「.jpg」「.bmp」といった,拡張子の部分を出さないように
したいと思います。
len,right,leftなど調べたのですが,後ろ4文字を出さないという方法が
わからずにいます。
ご指導お願いいたします。
いや、4文字とは限りませんよ。「.jpeg」なんて拡張子もありますし。
> 後ろ4文字を出さないという方法が
"."の位置を調べ、そこまでの文字列を切り出すようにしてみてください。
この時、"."の位置は文字列の「後ろ」から調べます。(VB6ならば、InStrRev関数を使う事ができます)
前から検索した場合、「Gazou.gif.jpg」のように、ベースファイル名にピリオドが含まれる時にも、「Gazou.gif」ではなく「Gazou」になってしまいますので。
…あるいは、FileSystemObjectオブジェクトのGetBaseNameメソッドを使うという手もありますね。
魔界の仮面弁士様,ありがとうございます。
教えていただいたことを手がかりに,VB6で以下のようにして
できるようになりました。
Dim x As Integer
x = InStrRev(CommonDialog1.FileName, ".", -1)
Text1.Text = Left(CommonDialog1.FileName, x - 1)
これで画像ファイル名以降を出さないようにできたのですが
さらに欲が出て,画像ファイル名の前(C:\○○\)を消したいと
思い,次のようにしてみました。
Dim i As Integer
i = InStrRev(CommonDialog1.FileName, "\", -1)
Text1.Text = Right(CommonDialog1.FileName, Len_(CommonDialog1.FileName) - i)
この2つを組み合わせ,画像ファイル名のみを表示させる場合には,
どのようにしたらよいのでしょうか。
よろしくお願いいたします。
難しく考えなくても、単に、それら(LeftとRightの)
両方の処理を行えば良いだけですよね。
'ファイル名を受け取る
S = CommonDialog1.FileName
'拡張子部分を捨てる処理
X = InStrRev(S, ".")
If X > 0 Then
S = Left(S, X - 1)
End If
'フォルダ部分を捨てる処理
X = InStrRev(S, "\")
If X > 0 Then
S = Right(S, Len(S) - X) '『S = Mid(S, X + 1)』の方が簡単ですけれどね。
End If
Text1.Text = S
もしくはMidを使って、切り出す処理を1回だけにする事もできるでしょう。
あるいは、先に書いたGetBaseNameメソッドですかね。(これが一番簡単かな?)
Text1.Text = CreateObject("Scripting.FileSystemObject").GetBaseName(CommonDialog1.FileName)
パス文字列を"\"でSplitした後"."でSplitする、という手もあります。
"C:Text1.txt"みたいなパスにも対応したかったら、
最初に":"でSplitする必要がありますが・・・。
魔界の仮面弁士様,Say様,ありがとうございました。
無事にできるようになりました。また,コードの書き方についても,
大変勉強になりました。
初心者の私に丁寧な対応をして下さり,感謝申し上げます。
ツイート | ![]() |