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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0306
pwdhangd:\nainai\nai.jpgという文字列をd:\\nainai\\nai.jpgしたいのですが..3解決


pwdhang

リンク

2012/3/6(Tue) 21:51:01|NO.45258

やりたい事は、HSPのスクリーン上にdrag & dropで画像ファイルをもってきて、その
ファイル名を取得し、EXCEL上のセルに記載したあと、Wordに差し込み印刷をしたいので
すが、
drag & dropで得たファイル名はd:\nainai\nai.jpgという形式です。差し込み印刷するには
d:\\nainai\nai.jpgというファイル名でないといけないのですが、できるだけ自動化
したいので、EXCELのセルにいれてから置換するのでなく、HSP上でd:\\nainai\\nai.jpgと
置換した上で、EXCELに写し、Wordの差し込みをしたいと考えています。

しかし

data="d:\nai\kj.jpg" i=0 data1="" do moji=strmid (data,i,1) if moji = "\\" {data1=data1+"\\\"} else {data1=data1+moji} i++ until moji="" mes data1 stop
とすると、\nとみなされて改行されてしまいました。いい知恵はないでしょうか?



この記事に返信する


GENKI

リンク

2012/3/6(Tue) 22:18:07|NO.45259

まずはじめに、HSPスクリプトエディタ上で文字列「\」を表現するためには都合上「\\」と記述しなければならない点は理解していますでしょうか?
これはHSPスクリプトエディタの中だけの話なので、外部から入力されたり出力したりする場合は全く関係ありません。
つまり…例えば

a = "d:\\nainai\\nai.jpg"
と記述すると、変数aには「d:\nainai\nai.jpg」という文字列が代入されます。
「d:\\nainai\\nai.jpg」という文字列が入るわけではありません。
ですので普通はdrag & dropで得たファイル名が「d:\nainai\nai.jpg」なら、何もせずそのまま変数に代入して利用します。
ここまで大丈夫でしょうか?


以上を踏まえてスクリプトを修正するとこうなります。

data="d:\\nai\\kj.jpg" i=0 data1="" do moji=strmid (data,i,1) if moji = "\\" { data1=data1+"\\\\" } else { data1=data1+moji } i++ until moji="" mes data1 stop


----
この問題って結構説明が難しいですよね…。(^ ^;



HK2

リンク

2012/3/7(Wed) 10:21:49|NO.45267

ロボットがあるとします。
「〜」と言え。
と命令されれば、ロボットは〜の部分を言います。

例えば、
「わたしは言いますロボット1号です」と言え。
と命令されれば、ロボットは
私は言いますロボット1号です
といいます。

これを間を開けて読ませようとするとします。
複数の命令に分けたり、空白を開ければできなくはないですが、
ロボット的にそれはなしにします。
文中に\iがあれば、それは間を開けると解釈するとします。
「わたしは\i言いますロボット1号\iです」と言え。
と命令されれば、言いますロボット1号ですの前後に間が空きます。

また、ある部分を強調して言わせるために、声を大きくする場合を考えます。
\lの位置からは大きな声で、\mの位置から普通の大きさでいうと決めます。
「わたしは言いますロボット\l1号\mです」と言え。
と命令されれば、1号の部分を大きな声で言います。

逆に、\sの位置からは小さな声で言うを決めれば、
「わたしは言いますロボット\s1号\mです。」と言え。
と命令されると、1号の部分を小さな声で言います。

次に、\iをロボットに説明させたいとします。
「わたしは\iを文中に見つけると、それを間を開ける合図と認識します。」と言え。
と命令されると、\iの部分で間を開けてしまい、うまく説明させれません。
なので、\\とすれば\と読むように決めます。
「わたしは\\iを文中に見つけると、それを間を開ける合図と認識します。」と言え。
とすれば問題は解消されます。

\\といわせたければ、
「私は\\\\を文中に見つけると、それを\\と読みます。」と言え。
と命令すれば、日本語で、「私は\\を文中に見つけると、それを\と読みます。」
と言ってくれます。

\\\なら\\\\\\
\\\\なら\\\\\\\\
となっていきます。


なお、ロボットの内部では、命令をロボットにとってわかりやすい命令にしているとします。
「私は\\\\を文中に見つけると、それを\\と読みます。」と言え。


say わ say た say し say は say え say ん say え say ん say を say ぶ say ん say ちゅ say う say に say み say つ say け say る say と interval say そ say れ say を say え say ん say と say よ say み say ま say す
と内部で置き換えたなら、\\\\は記録されていません。内部では\\になっているのです。
同様に、\\も\になっています。

もし、言いますロボット2号が通信でこの命令を送信してきたとき、
\と読ませるのに、\\を送信してくることはありません。
say え
say ん
とすれば済むからです。
\\はあくまでも\iなどとややこしくならないようにするための物なのです。

なお、\の後の文字がほかの文字だった場合はどうするのかは、
\を消して次の文字だけ読むとします。

「私が噂\の言いますロボットです」と言え。
と命令されれば「私が噂の言いますロボットです」と言います。

鍵かっこ"「"や"」"を読ませる場合もそのまえに\をつけます。
「\「ごちょごちょ\」と言え。\iと命令されれば、ごちょごちょ\iといいます。」と言え。


ここでいうロボットは、HSPで作ったプログラムや、ほかのプログラムのことを指し、
「〜」と言え。 のような命令はHSPのスクリプトを指します。



pwdhang

リンク

2012/3/7(Wed) 20:55:59|NO.45272

GENKIさん、HK2さん、ありがとうございました。
分かっていたつもりでしたが、分かっていなかったようです。
解決できました。



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