VB6.0を使っています.
Private Sub Form_Load()
txtFileName.Text = Command()
End Sub
このような処理を行ったときにCommand関数が返すファイル名が8.3形式になってしまいます.
このファイル名をロングファイル形式にするにはどうしたらいいのでしょうか.
Command 関数は引数をそのまま返すだけで、余計なことは何もしませんが。
拡張子の前の文字が8文字以上のときは8文字になってしまいます。
これはCommand関数は関係ないということなのでしょか。
8.3形式とかロングファイル形式とかよく分かってないのですが、ファイルがどちらの形式になるのかは、Visual Basicは関係ないということなのでしょうか。
もし分かれば教えてください。おねがいします。
当方環境(Win2000SP4+VB6.0SP6)で試した限りでは、
仰るような結果にならずLongFileNameでしたので、
環境の問題である可能性や、引数として渡す以前の問題が考えられます。
長いファイル名を求めるのであれば、方法はありますけれども。
http://support.microsoft.com/kb/163227/ja
>拡張子の前の文字が8文字以上のときは8文字になってしまいます。
>これはCommand関数は関係ないということなのでしょか。
無関係ですCommand関数は引数で与えられたものをそのまま返すだけです。
これは前の質問の続きですね、ドラッグ&ドロップで渡されたファイル名が
"8.3形式"なんでしょう、何故かは判りませんが。
ファイルをドラッグしてドロップした時にどのようなファイル名が
渡されるか調べるには、テキストボックスを一つ置いて、
テキストボックスのプロパティのOLEDropModeを「1-手動」にし、
Private Sub Text1_OLEDragDrop(Data As _
DataObject, Effect As Long, _
Button As Integer, Shift As _
Integer, X As Single, Y As Single)
If Data.GetFormat(vbCFFiles) Then
Text1.Text = Data.Files(1)
End If
End Sub
とやれば渡されるファイル名が表示されます。
ふーん、2000では再現されないんだぁ・・・。
98とはシェルの仕様が違うのかなぁ?
Dir$関数を通すと、ファイル名はロングファイル名になります。
パス(の中のフォルダ名)は8.3形式のままだけど。
8.3形式のままファイルを作り直すと、
本当に8.3形式のファイル名で作ってくれるもので、
おいらも苦労した事が・・・。
Dir関数を使うとうまくできました。上のでいうと
Private Sub Form_Load()
txtFileName.Text = Dir(Command)
End Sub
という感じでした。
どうもありがとうございました。
すみません。解決にチェックいれるの忘れてました。
解決しました。ありがとうございました。
| ツイート |
|