フルパスからファイル名を抜き出す

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: フルパスからファイル名を抜き出す

詳しい解説をありがとうございました

by Vitalstar » 2005年6月09日(木) 21:55

>>イグトランスさん

詳しい解説をありがとうございました。
とても参考になります。
また、お世話になると思いますが、そのときはよろしくお願いします。

by イグトランス » 2005年6月09日(木) 12:38

ところで_splitpathの結果が返ってくるほうの引数にString型の変数を渡しているようですが、
その前にちゃんとZeroString()などは行っていますか?
ZeroStringなどで結果を入れるところを用意していない場合それはたまたま動いているというだけで、正しいプログラムとは言えません。

そもそもファイル選択ダイアログで選択されたファイルパスからファイル名と拡張子を抜き出したいだけなら、
_splitpathを使わなくても、ofn.lpstrFile + ofn.nFileOffsetとするだけで十分です。
これはBytePtr型ですが、MakeStr関数を使えばString型の文字列になります。

うまくいきました

by Vitalstar » 2005年6月09日(木) 07:04

k2さんのようにしてやってみたところ、エラーは発生しませんでした。
解決策を教えていただき、ありがとうございました。
また、質問することがあったら、お世話になりたいと思います。

原因はわかりませんが…

by k2 » 2005年6月08日(水) 23:31

lstrcpyやlstrcat関数を使ってみたらどうでしょうか?
具体的には、

name=filename+ext

の行を

lstrcpy(name,filename)
lstrcat(name,ext)

のようにしてみるといいと思います。

フルパスからファイル名を抜き出す

by Vitalstar » 2005年6月08日(水) 22:07

初めまして。最近サイトを設立した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自体は、デバッグで確認したところ、
うまく行っているようなので、ファイル名と拡張子の連結
部分に問題があるようです。

ページトップ