[トップ][編集][ノート][編集履歴][一覧][最近の更新][->English]

hsp2.61互換ソースとhsp3.x準拠ソースのまとめ

掲示板にて非常に多いのでHSP3のガイドラインとして互換ソースについてまとめます。
掲示板で2.61互換の書き方をしていることが問題となっている方にこちらを案内してください。
主に命令から関数へと書式変更したものについて両方のソースを具体的に示します。
全てを一度には大変なので気づいた方ちょこちょこと足りないものの補完をお願いします。

なお、2.61互換ソースは「互換ソース」、3.x準拠ソースは「準拠ソース」と省略します。

互換ソースと準拠ソースとは何か?

まずhsp2.61ユーザーにこのことを認識させる必要があると思います。 というのも自分でhsp261cmp.asをインクルードしている人はその点を認識されている方なのですが、そうでない人について、エディタの設定で「拡張マクロを使用〜」の設定次第で自動的にhsp261cmp.asが読み込まれてしまうのが、認識不足のひとつになってます。

そこでまず今、自分が書いているソースが互換ソースなのか準拠ソースなのかを認識させるところから始めます。
これを説明して初めて、具体的にどちらのソースで書いたらいいのか、ということになってきます。

互換ソースのチェック項目

以下のチェック項目に当てはまる人は互換ソースを書いています。

  • スクリプトエディタの「HSP」メニューの「HSP拡張マクロを使用する」にチェックがついていない
  • スクリプト中に「#include "hsp261cmp.as"」と書いている

準拠ソースのチェック項目

以下のチェック項目を満たす人は準拠ソースを書いています。

  • スクリプトエディタの「HSP」メニューの「HSP拡張マクロを使用する」にチェックがついている
  • スクリプト中に「#include "hsp261cmp.as"」と書いていない

互換ソースと準拠ソースの書き方の違い

どちらのソースを書いているのか分かったところで、両者で書き方の異なる命令・関数を挙げていきます。
書き方の例としては準拠ソースを先に示し、そのあとで互換ソースを示します。

int

// 準拠ソース
s = "123": t = "321"
ans_s = s + t          : mes ans_s
ans_i = int(s) + int(t): mes ans_i
; 互換ソース
s = "123": t = "321"
ans_s = s + t: mes ans_s
int s: int t
ans_i = s + t: mes ans_i

rnd

// 準拠ソース
n = rnd(10)
n3 = n + rnd(5) + rnd(8)
; 互換ソース
rnd n, 10
rnd n1, 5
rnd n2, 8
n3 = n + n1 + n2

strlen

// 準拠ソース
mes "\"HSP\"の長さは"+strlen("HSP")+"です"
; 互換ソース
s = "HSP"
strlen ln, s
mes "\""+s+"\"の長さは"+ln+"です"

gettime

// 準拠ソース
mes "今日は"+gettime(1)+"月"+gettime(3)+"日です"
; 互換ソース
gettime month, 1
gettime day, 3
mes "今日は"+month+"月"+day+"日です"

str

// 準拠ソース
m = 123: n = 321
ans_i = m + n          : mes ans_i
ans_s = str(m) + str(n): mes ans_s
; 互換ソース
m = 123: n = 321
ans_i = m + n: mes ans_i
str m: str n
ans_s = m + n: mes ans_s

strf

// 準拠ソース
n = 12345
mes ""+n+" = $"+strf("%x",n)
; 互換ソース
n = 12345
ns = n
str ns, 16
mes ""+n+" = $"+ns

peek

// 準拠ソース
letter = "abcdefghijklmnopqrstuvwxyz"
mes letter
repeat strlen(letter)
        poke letter, cnt, peek(letter,cnt)+'A'-'a'
loop
mes letter
; 互換ソース
letter = "abcdefghijklmnopqrstuvwxyz"
mes letter
strlen ln, letter
repeat ln
        peek c, letter, cnt
        poke letter, cnt, c+'A'-'a'
loop
mes letter

wpeek

lpeek

sysinfo

ginfo