HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0920
赤松ファイル選択dialogのrefstrでbcopyをするには?4解決


赤松

リンク

2016/9/20(Tue) 10:13:30|NO.76912

わかる方からすると簡単な内容だと思いますが色々なサイトで調べたりhelpを見てもわからなかったので質問させていただきます
現在簡単なmp3プレーヤーを作っている者です。
dialogにてファイルを選択させたときにrefstrにパスが返りますがそれをbcopyなどに使うときにはどのようにしたらいいんでしょうか

dialog "mp3" , 16 , "音声ファイル"
if stat = 1:bcopy refstr ,"music.mp3"

のようにして一度作業フォルダに持ってきてから再生したいと考えているのですが
bcopyを実行したときにファイルパスの区切りが\\ではなく\になっているため(だと勝手に思っていますが…)に
エラー12 -->ファイルが見つからないか無効な名前です
になってしまいます。

refstrの\を\\に変換する方法や\のままでもコピーできる方法、もしくはそもそもやり方が間違ってるなど
どなたか教えてください



この記事に返信する


スペース

リンク

2016/9/20(Tue) 12:01:05|NO.76913

区切りを\\と入力する必要があるのはエディタで入力するときのみです。
refstrに入ってるパスでは気にする必要はありません。
まず、私の環境(64bit win10 home、エディタ3.4)ではそのようなエラーは発生しませんでした。
ですがファイルはhsp3.exeがあるフォルダはもちろん、ツール→ソースフォルダを開くで開けるフォルダに存在していなかったので、
コピーは正常に完了していないと思います。
恐らくですが、bcopyは相対パスの指定に対応していないのではないでしょうか?
試しに絶対パスで指定した所、正常に完了しました。

dialog "mp3" , 16 , "音声ファイル" if stat = 1:bcopy refstr,""+dir_exe+"\\music.mp3"
dir_exeは最後に\がついていないので、ファイル名を後に付ける場合は気をつけてください。



MillkeyStars

リンク

2016/9/20(Tue) 12:56:27|NO.76914

dialog でファイル選択が正常に行われた場合、その時点で現在のカレントフォルダが変更されます。

dialog "mp3",16,"音声ファイル" //←この時点でカレントフォルダが変更 if stat = 1:bcopy refstr ,"music.mp3"

これを回避するには、スペースさんが言う通りに絶対パスで指定していただくか chdir などでカレントフォルダを変更してください。

old_cur = dir_cur dialog "mp3",16,"音声ファイル" chdir old_cur if stat = 1:bcopy refstr ,"music.mp3"



スペース

リンク

2016/9/20(Tue) 14:33:18|NO.76915

>>MillkeyStarsさん
ああ・・・そういえば最初にdir_exeじゃなくdir_curで試したとき、
Dialogでカレントディレクトリが変更されてるのに気づいてdir_exeにしたけど、
言われてみればカレントディレクトリが変更されてたら相対パスじゃ当然元の場所にコピーされるか。
今、確認したら元のフォルダーにしっかりコピーされてました。
相対パスに対応してないなんて頓珍漢なこと言ってごめんなさい・・・



赤松

リンク

2016/9/21(Wed) 14:41:00|NO.76922

スペース様、ありがとうございます
最終的に

dialog "mp3" , 16 , "音声ファイル" if stat = 1:bcopy refstr,""+dir_exe+"\\music.mp3"
を使うことにしました。

MillkeyStars様のカレントフォルダが変更されるというのも知らなかったので
勉強になりました。ありがとうございました

解決にさせていただきます



ONION software Copyright 1997-2021(c) All rights reserved.