Command関数が返すファイル名をロングファイル形式にする方法

解決


nao  2006-11-22 15:40:50  No: 97244

VB6.0を使っています.

Private Sub Form_Load()
    txtFileName.Text = Command()
End Sub

このような処理を行ったときにCommand関数が返すファイル名が8.3形式になってしまいます.
このファイル名をロングファイル形式にするにはどうしたらいいのでしょうか.


我龍院  2006-11-22 18:38:56  No: 97245

Command 関数は引数をそのまま返すだけで、余計なことは何もしませんが。


nao  2006-11-23 01:02:02  No: 97246

拡張子の前の文字が8文字以上のときは8文字になってしまいます。
これはCommand関数は関係ないということなのでしょか。
8.3形式とかロングファイル形式とかよく分かってないのですが、ファイルがどちらの形式になるのかは、Visual Basicは関係ないということなのでしょうか。
もし分かれば教えてください。おねがいします。


もげ  2006-11-23 08:45:58  No: 97247

当方環境(Win2000SP4+VB6.0SP6)で試した限りでは、
仰るような結果にならずLongFileNameでしたので、
環境の問題である可能性や、引数として渡す以前の問題が考えられます。

長いファイル名を求めるのであれば、方法はありますけれども。
http://support.microsoft.com/kb/163227/ja


我龍院  2006-11-23 09:36:33  No: 97248

>拡張子の前の文字が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
とやれば渡されるファイル名が表示されます。


mammal  2006-11-23 16:40:53  No: 97249

ふーん、2000では再現されないんだぁ・・・。
98とはシェルの仕様が違うのかなぁ?

Dir$関数を通すと、ファイル名はロングファイル名になります。
パス(の中のフォルダ名)は8.3形式のままだけど。

8.3形式のままファイルを作り直すと、
本当に8.3形式のファイル名で作ってくれるもので、
おいらも苦労した事が・・・。


nao  2006-11-24 22:51:55  No: 97250

Dir関数を使うとうまくできました。上のでいうと
Private Sub Form_Load()
    txtFileName.Text = Dir(Command)
End Sub
という感じでした。
どうもありがとうございました。


nao  2006-11-24 22:53:52  No: 97251

すみません。解決にチェックいれるの忘れてました。
解決しました。ありがとうございました。


※作成する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。







   このエントリーをはてなブックマークに追加