« 【よみもの】ゆめゆめ日記 第2回 | メイン | 【よみもの】うすあじコラム »

2009年02月25日

【講座】「教えて!おにたま!!」

<松尾 さんからのおたより>

先日は、n88-basicで言うところの「line input」に
変わるノートパット命令による代替え方法を教えていただき、
あらゆる方向に応用でき、感謝しています。
今回は、instr関数やstrmid関数中で、chr$("&h"22)や、
chr$("&h"0d)といった、文字列では指定できないキャラクタ
コードを指定するには、どのようにすればいいのか
教えてください。
また、「mid$("abcdef",2,3)="123"」といった、文字列の1部
書き換えはどのようにすればいいのでしょうか。


<こたえ>

またまた、n88-basicなど昔のMicrosoft系BASICにあった
文字列操作に関連した質問ですね。chr$というのは、HSPには
存在しない文字列関数で、指定したコードの文字列に変換する
機能を持っていました。
さて、HSPに限らず最近の言語では、キーボードから直接入力
できない文字をエスケープシーケンスという手法で記述する
ことができるようになっています。
chr$関数の中に入るコードは、ASCIIコードと呼ばれていて、
「chr$(&H22)は「"(ダブルクォーテーション)」」、
「chr$(&H0d)はCR(改行)」ということになります。

http://ja.wikipedia.org/wiki/ASCII

HSPでこれらの文字を入力する場合は、
「\"」がダブルクォーテーション、「\r」が改行になります。
(Windowsの改行では、「\n」の方が多く使われています)
ただし、この記述方法だと、chr$のように自由なコードを
指定することはできません。
自由なコードを記述する場合は、poke命令を使って直接
文字列が格納されているメモリを書き換えることで同様の
処理になります。

s="*":poke s,0,$60
mes s

これを応用すれば、文字列の1部を書き換えることも可能です。
文字列の操作や格納方法については、付属するドキュメント
hsp3str.htm(HSP ver3文字列のひみつ)に情報が書かれている
ので、参考にしてみてください。

それでは、またまた。HSPに限らず、PCのコトや
プログラミング関係どんなことでもお便り待っていますね。

(おにたま)

投稿者 usuaji : 2009年02月25日 02:26

口臭チェッカー市場