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

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
Vitalstar

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

#1 投稿記事 by Vitalstar »

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

原因はわかりませんが…

#2 投稿記事 by k2 »

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

name=filename+ext

の行を

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

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

うまくいきました

#3 投稿記事 by Vitalstar »

k2さんのようにしてやってみたところ、エラーは発生しませんでした。
解決策を教えていただき、ありがとうございました。
また、質問することがあったら、お世話になりたいと思います。
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#4 投稿記事 by イグトランス »

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

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

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

#5 投稿記事 by Vitalstar »

>>イグトランスさん

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