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

小ワザ

mref命令

文字列配列を受け取る

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
#module
#deffunc test_A array sary_A, local adr, local saryinfo_A    ; 文字列型配列変数を受け取る
    mref hspctx,68
    dupptr adr, hspctx.207, 4
    dupptr saryinfo_A, adr, 48    ; 第一引数のPVAL構造体取得
    
    repeat saryinfo_A.2
        mes sary_A.cnt
    loop
    
    return
 
#deffunc test_B array sary_B, local adr, local saryinfo_B    ; 文字列型配列変数を受け取る
    mref hspctx, 68
    dupptr adr, hspctx.207, 4
    dupptr saryinfo_B, adr, 48    ; 第一引数のPVAL構造体取得
    
    repeat saryinfo_B.2 * saryinfo_B.3
        francais = cnt\saryinfo_B.2
        japonais = cnt/saryinfo_B.2
        
        mes sary_B.francais.japonais
    loop
    
    return
#global
 
sdim s,64,16
s.0    = "C" , "Perl" , "BASIC" , "java"
s.4    = "C++" , "HSP" , "DELPHI" , "VBS"
s.8    = "JScript" , "D" , "pascal" , "VBA"
s.12    = "HTML" , "Sleipnir" , "FireFox" , "Opera"
 
test_A s
 
sdim t,64,2,4
t.0.0    = "Le Japon" , "日本"
t.0.1    = "La France" , "フランス"
t.0.2    = "La Chine" , "中国"
t.0.3    = "Les Etas Unis" , "アメリカ合衆国"
 
test_B t

挙動調査

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
    #include "llmod.as"
 
    #module "try"
 
    #deffunc try_int int , int
        mref n1 , 0
        mref n2 , 1
 
        getptr p , n1 : mes "pointer to n1 = " + p
        getptr p , n2 : mes "pointer to n2 = " + p
 
        mes "n1 = " + n1 + " , n2 = " + n2
        mes "n1.0 = " + n1.0 + " , n1.1 = " + n1.1
 
        return
 
    #deffunc try_str str , str
        mref s1 , 32
        mref s2 , 33
 
        getptr p , s1 : mes "pointer to s1 = " + p
        getptr p , s2 : mes "pointer to s2 = " + p
 
        mes "s1 = " + s1 + " , s2 = " + s2
 
        return
 
    #deffunc try_val val , val
    mref v1 , 16
        mref v2 , 17
 
        getptr p , v1 : mes "pointer to v1 = " + p
        getptr p , v2 : mes "pointer to v2 = " + p
 
        mes "v1 = " + v1 + " , v2 = " + v2
 
        return
 
    #global
 
    font "MS ゴシック" , 18
 
    try_int 10,100
 
    mes "n1 = " + n1@try
    mes "n2 = " + n2@try
 
    try_str "hsp2.61" , "hsp3.0a"
 
    mes "n1 = " + n1@try
    mes "n2 = " + n2@try
 
    a = 5 : b = 10
    getptr p , a : mes "pointer to a = " + p
    getptr p , b : mes "pointer to b = " + p
    try_val a , b
 
    mes "n1 = " + n1@try
    mes "n2 = " + n2@try
 
    stop

コメント

上にあるコメントほど最新のものです。

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White
  • その前につまりモジュール内でグローバルな変数として保持したい場合はmrefで受け取った引数をモジュール内変数に代入しないとダメってことですね。mrefは引数を受け取るために共用されるということだ。 -- kz3 2005-10-06 09:22:04 (木)
  • とりあえずmref構造体?をファイルにダンプしてみようか。 -- kz3 2005-10-06 09:20:30 (木)
  • つまり・・・mref命令はmref命令で取得した内容を管理する変数があってそれがどうやら32000バイトあるらしい。(デバッグウィンドウより。)これを構造体と考えてみよう。第一引数、第二引数、第三・・・と構造体の最初の方?に引数が格納される。数値型ならそのまま?格納され、val、む。ちょっとまて。valだとどうなるかな。 -- kz3 2005-10-06 09:10:09 (木)
  • 数値変数の領域に何故かアドレスが入っている?^^; -- kz3 2005-10-06 08:58:37 (木)
  • なんか領域が侵されてる気がするんだよなぁ・・・s1,s2のメモリダンプ見てみると変な値が入っていたりしてるし・・・ -- kz3 2005-10-05 23:33:49 (水)
  • HSPの多次元配列のインデックスは、Cなどと逆になっています^^; -- kz3 2005-09-28 09:57:32 (水)

トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2013-08-06 (火) 13:00:11 (124d)