初めまして。最近サイトを設立したVitalstarです。
早速質問があるのですが、タイトルの通り、フルパスから
ファイル名を抜き出したいと思い、下のように
_splitpathを利用したコードを作りました。
しかし、うまくいきません。どなたか、解決策を知っている人が
いらっしゃったら、意見をお願いします。
Dim buffer As String
Dim drive As String
Dim path As String
Dim filename As String
Dim ext As String
Dim name As String
(ここにファイル選択ダイアログを表示するコードが入ります)
_splitpath(buffer,drive,path,filename,ext)
name=filename+ext
ちなみに、_splitpath自体は、デバッグで確認したところ、
うまく行っているようなので、ファイル名と拡張子の連結
部分に問題があるようです。
フルパスからファイル名を抜き出す
原因はわかりませんが…
lstrcpyやlstrcat関数を使ってみたらどうでしょうか?
具体的には、
name=filename+ext
の行を
lstrcpy(name,filename)
lstrcat(name,ext)
のようにしてみるといいと思います。
具体的には、
name=filename+ext
の行を
lstrcpy(name,filename)
lstrcat(name,ext)
のようにしてみるといいと思います。
ところで_splitpathの結果が返ってくるほうの引数にString型の変数を渡しているようですが、
その前にちゃんとZeroString()などは行っていますか?
ZeroStringなどで結果を入れるところを用意していない場合それはたまたま動いているというだけで、正しいプログラムとは言えません。
そもそもファイル選択ダイアログで選択されたファイルパスからファイル名と拡張子を抜き出したいだけなら、
_splitpathを使わなくても、ofn.lpstrFile + ofn.nFileOffsetとするだけで十分です。
これはBytePtr型ですが、MakeStr関数を使えばString型の文字列になります。
その前にちゃんとZeroString()などは行っていますか?
ZeroStringなどで結果を入れるところを用意していない場合それはたまたま動いているというだけで、正しいプログラムとは言えません。
そもそもファイル選択ダイアログで選択されたファイルパスからファイル名と拡張子を抜き出したいだけなら、
_splitpathを使わなくても、ofn.lpstrFile + ofn.nFileOffsetとするだけで十分です。
これはBytePtr型ですが、MakeStr関数を使えばString型の文字列になります。
詳しい解説をありがとうございました
>>イグトランスさん
詳しい解説をありがとうございました。
とても参考になります。
また、お世話になると思いますが、そのときはよろしくお願いします。
詳しい解説をありがとうございました。
とても参考になります。
また、お世話になると思いますが、そのときはよろしくお願いします。