Top > サンプルテンプレート
HTML convert time to 0.003 sec.


サンプルテンプレート

Last-modified: 2006-09-04 (月) 11:12:06

利用バージョン Edit

HSP3.1
Easy3Da

スクリーンショット Edit

まだない

ダウンロード Edit

ない

ソース Edit

filemap[1.2].as
/******************************************************************************
 *                                                                            *
 *                            データ構造:連想配列1                           *
 *                                                                            *
 ******************************************************************************/

    #module "map"

    ;-----------------------------------------------------------------------
    ; 連想配列を作成する
    ; map_dim 要素数, keyの最大レングス, valueの最大レングス
    ;-----------------------------------------------------------------------
    #deffunc map_dim int, int, int
//      モジュール内でグローバルな変数は別途用意しなければならない < kz3
//      mref mapSize, 0
//      mref keyLength, 1
//      mref valueLength, 2
        mref n1, 0 : mapSize     = n1 ; 要素数
        mref n2, 1 : keyLength   = n2 ; keyの最大レングス
        mref n3, 2 : valueLength = n3 ; valueの最大レングス

        sdim keyArray, keyLength, mapSize
        sdim valueArray, valueLength, mapSize
        return

    ;-----------------------------------------------------------------------
    ; 指定の値と指定されたキーをこのマップに関連付けます。
    ; マップが以前にこのキーのマッピングを保持していた場合、古い値が置き換えられます。
    ; map_put key, value
    ;-----------------------------------------------------------------------
    #deffunc map_put str, str
        mref return_status,64 ; statusの戻り値
        mref key, 32          ; key
        mref value, 33        ; value

//      1つ余計にループを回して最終回チェック
//      さらに最終回チェックは要素の参照前にチェック < kz3
//      repeat mapSize      
        repeat mapSize+1
          if cnt == mapSize {       ;cntが配列の要素数に達した=空きがない。
            return_status = 1
            break
          }
          if keyArray.cnt == "" {   ;key配列が空なら追加
            keyArray.cnt = key
            valueArray.cnt = value
            break
          }
          if keyArray.cnt == key {  ;key配列に同じ値が見つかればvalueを更新
            valueArray.cnt = value
            break
          }

        loop
        
        return

    ;-----------------------------------------------------------------------
    ; キーにマップされている値を返します。
    ; 存在しなければstatus=0が返ります。
    ; map_get key, 結果を保持する変数
    ;-----------------------------------------------------------------------
    #deffunc map_get str, val
        mref return_status,64 ; statusの戻り値
        mref get_key, 32      ; key
        mref get_value, 25    ; 戻り値

//      1つ余計にループを回して最終回チェック
//      さらに最終回チェックは要素の参照前にチェック < kz3
//      repeat mapSize
        repeat mapSize + 1
          if cnt == mapSize {           ;cntが配列の要素数に達した=空きがない。
            return_status = 1
            break
          }
          if keyArray.cnt == get_key {  ;key配列に同じ値が見つかればvalueを更新
            get_value = valueArray.cnt
            break
          }

        loop
        
        return
    #global

/* -------------------------------------------------------------------------- *
 *                                                                            *
 *                           S A M P L E                           *
 *                                                                            *
 * -------------------------------------------------------------------------- */
    map_dim 10, 10, 100   ; 連想配列の作成

    map_put "国語", "90点"

    sdim result
    map_get "国語", result
    
    if stat!1 : print result : else : print "見つかりません."

    stop

利用モデル Edit

むむ

解説 Edit

はは

掲示板 Edit

{{bbs}}