hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
String/連結 - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

文字列の連結

HSPで文字列を連結するには文字列同士を+演算子でくっつければいいですね?

  1
  2
  3
  4
  5
 
 
 
 
 
    mes "Hello" + "," + "world!"
    H = "Hot" : S = "Soup" : P = "Processor"
    HSP = H + S + P
    mes HSP
    stop

もう少し詳しく文字列を見てみよう。上の各変数の内容を覗いてみると次の表のようになっている。

変数H変数S変数P
インデックス0123012340123456789
文字HotSoupProcessor
バイトコード$48$6F$74$00$53$6F$75$70$00$50$72$6F$63$65$73$73$6F$72$00
変数HSP
インデックス012345678910111213141516
文字HotSoupProcessor
バイトコード$48$6F$74$53$6F$75$70$50$72$6F$63$65$73$73$6F$72$00

文字列"Hot"と書くとHotの後ろにヌル文字と呼ばれる文字コード$00がつくというのは付属のドキュメントに書かれていますよね。(書かれてなかった!これはオンラインドキュメント・文字列のひみつに書かれています。)
そしてこの$00が文字列の終りを表します。

文字列の連結というのは、文字列の後ろに別の文字列の先頭をくっつけるということです。
ここで重要なのが「文字列の後ろ」です。

文字列の後ろというのは文字列の終りのことです。文字列の終りを表すのは$00ですね。
連結される文字列は前の文字列の文字列終端コード$00を先頭から順番に検索します。
そして一番最初の$00の位置にくっつけます。
「百聞は一見にしかず」次のテストコードで、ファイルの種類を増やすのdialogではファイルの種類の項目を増やせない理由も分かると思います。

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
    ; < HSP3 >
    msg = "Hello,world" : mes msg
 
    msg += ",HSP3"      : mes msg
 
    repeat
        i = instr(msg,0,",")
        if i = -1 : break
        poke msg , i , $00
    loop
 
    mes msg
    msg += ",HSP3"      : mes msg
    stop

このサンプルの最終的なmsgの内容は以下のようになっているのがデバッグウィンドウでも確認できると思います。
インデックス10にヌル文字があるため、以降msg変数を文字列として扱うときはインデックス11以降は文字列として認識されなくなります。

変数msg
インデックス012345678910111213141516
文字Hello,HSP3,HSP3
バイトコード$48$65$6C$6C$6F$2C$48$53$50$33$00$2C$48$53$50$33$00

コメント


URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2007-04-08 (日) 02:35:03 (2436d)