ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月28日(日) 06:58

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 5 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 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自体は、デバッグで確認したところ、
うまく行っているようなので、ファイル名と拡張子の連結
部分に問題があるようです。


通報する
ページトップ
   
投稿記事Posted: 2005年6月08日(水) 23:31 
lstrcpyやlstrcat関数を使ってみたらどうでしょうか?
具体的には、

name=filename+ext

の行を

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

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


通報する
ページトップ
   
 記事の件名: うまくいきました
投稿記事Posted: 2005年6月09日(木) 07:04 
k2さんのようにしてやってみたところ、エラーは発生しませんでした。
解決策を教えていただき、ありがとうございました。
また、質問することがあったら、お世話になりたいと思います。


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2005年6月09日(木) 12:38 
オフライン

登録日時: 2005年5月31日(火) 17:59
記事: 899
お住まい: 東京都
ところで_splitpathの結果が返ってくるほうの引数にString型の変数を渡しているようですが、
その前にちゃんとZeroString()などは行っていますか?
ZeroStringなどで結果を入れるところを用意していない場合それはたまたま動いているというだけで、正しいプログラムとは言えません。

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


通報する
ページトップ
投稿記事Posted: 2005年6月09日(木) 21:55 
>>イグトランスさん

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


通報する
ページトップ
   
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 5 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[13人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean