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


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0123
harustrrepを使って¥を編集したい3解決


haru

リンク

2019/1/23(Wed) 19:44:02|NO.86381


notesel note noteload "save.txt" noteget aa,0 noteget saa,2 {} if aa!"null" : mci "open "+saa+" alias saa" mci "play saa"
(saaにはファイルのパスが入っています)
このようにすると、ファイルパスの\が消えてしまい、
mciのロードが上手くいきません。
そこで{}の部分に

strrep saa,"\","\\"
という命令を追加して¥を残そうとしたのですが、
"\\"の部分が上手く読み込まれませんでした。
何か良い改善方法等思いつきませんでしょうか?



この記事に返信する


Velgail

リンク

2019/1/23(Wed) 20:24:19|NO.86383

strrep saa,"\","\\"

と入力した場合、コンパイルが通らないと思います。 原因は\がエスケープ文字(HSPマニュアルでは特殊な意味を持つキャラクタ)として利用されているからで、その結果、文字列として「",」が第二引数に与えられた状態になっています。 以下の公式マニュアルを参考にしてください。 http://www.onionsoft.net/hsp/v33/doclib/hspprog.htm#STRING このマニュアルの中に、「「\\」 は、ただの「\」になります。」という1文があります。これを適用して、
strrep saa,"\\","\\\\"
とすれば、意図通り、文字列中の1つの\につき\\に置換されますよ。



MillkeyStars

リンク

2019/1/24(Thu) 01:24:31|NO.86385

質問の答えではないけど、質問との関連になると思うので一応。

パス名に半角スペースがあって、mci が認識できない場合は、下記の通り「"」でパス名を囲っちゃうといいよ。
文字列の中に、「"」を挿入する場合、Velgailさんが言っている通りにエスケープ文字となる「\」と表現したい「"」で表現できる。

mci "open \""+saa+"\" alias saa"
これで、パス名にスペースがあっても、mci は"〜"までをパス名として認識する。



haru

リンク

2019/1/24(Thu) 05:57:09|NO.86387

無事成功しました。
回答ありがとうございました!



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