Skip to content

myarray

Compare
Choose a tag to compare
@YUZRANIUM YUZRANIUM released this 16 Jan 11:53
· 20 commits to master since this release
6764a0d

マイ・アレイ GitHub release (latest by date including pre-releases)

多次元配列変数をなんやかんやする、なんてことないモジュール

不具合報告や要望等は HSPTV!掲示板 で頂けると幸いです。

今後の予定

  • 追加分のヘルプファイル
  • ctlarray命令をはじめとした制御系命令の調整
  • モジュール型変数への対応
  • 多次元配列の結合と分離 (※半分妄想)
  • 辞書的なもの (※半分妄想)
  • 多次元配列変数どうし、もしくは多次元配列変数と通常変数の連続的な四則演算 (※半分妄想)

特徴(Feature)

  • 標準命令のみで動作し、変数名、ラベル名の表示等が可能.
  • 1次元、2次元、3次元、4次元、全ての次元に対応.
  • ラベル型、文字列型、実数型、整数型に対応
  • 配列の途中から値の書き出し、連続代入、配列コピーが可能.

情報を書き出す priarray

多次元配列変数の情報を複数行文字列として書き出す priarray命令   (由来 : print array)

// string_var : 情報を受け取る文字列型変数
// ary        : 多次元配列変数
// coment     : コメント(省略可)
priarray string_var, ary, coment
表示内容 \ 型 label str double int struct COM object
変数名 O O O O O O
O O O O O O
各次元要素数 O O O O O O
使用時の行数 O O O O O O
値の書出し O O O O X X

デバッグウィンドウでも多次元配列変数の中身をテキストに出力できますが、この命令を使えばより柔軟なデバッグ作業、確認作業が可能になるはずです.

※あくまでも、デバッグ用、確認用としてお使い下さい.


連続代入を行う setarray

多次元配列変数に連続代入を行う setarray命令   (由来 : setting array)

// ary      : 代入先の配列変数 (dim系での初期化 必須)
// in_val   : 代入したい値 (初期値)
// idx_flag : indexフラグ
// idx      : 増減値
setarray ary, in_val, idx_flag, idx
動作内容 \ 型 label str double int
連続代入 --- O O O
増減機能 X O O O
  • 文字列型、実数型、整数型の多次元配列変数への連続代入が可能.

  • 実数型、整数型では代入時に増減値を指定することで値を変化させることが可能.

  • 文字列型の場合はインデックス付与として機能します.

検証用の多次元配列変数を簡単に準備できます.

※ 既存の配列や複数行文字列を配列変数に代入したい場合は cnvarray命令をご利用下さい
※ ラベル型配列を生成したい場合は labarray命令をご使用ください


値を書き出す outarray

多次元配列変数の値を複数行文字列として書き出す outarray命令   (由来 : output array)

// string_var : 配列変数の中身を受け取る文字列型変数
// ary        : 配列変数
// label_flag : ラベルモード
outarray string_var, ary, label_flag
  • priarray命令とは異なり、値のみを複数行文字列として書き出す

  • ラベル型、文字列型、実数型、整数型に対応

  • ラベル型を書き出す際に、ラベルモードのフラグを1にするとreturnが追加される
    (※stopは追加されません)


変換する cnvarray

あらゆるものを別の多次元配列に変換する cnvarray命令   (由来 : convert array)

// ary_name    : 変数名
// in_val      : 読み込む 複数行文字列型変数 または 多次元配列変数
// type        : 変換後の型を表す数値  (= 2) (2:文字列型, 3:実数型, 4:整数型)
// d1,d2,d3,d4 : 変換後の各次元要素数 (= 0, 0, 0, 0)
cnvarray ary_name, in_val, type, d1, d2, d3, d4
  • 複数行文字列、多次元配列変数 を 別の多次元配列変数 に変換

  • 変換時に変数の型、及び各次元要素数を指定できる

  • 内部でdimtype ary_name, type, d1, d2, d3, d4としているので ary_name を初期化する必要はない

  • in_val が多次元配列変数の場合のみ d1 以降すべて省略できる.
    その際は in_val の各次元要素数が、そのまま ary_name の要素数となる ( ---> 配列変数コピー機能)

  • outarray命令と組み合わせることで、値と変数名はそのままに、次元の拡張・縮小、型変換を行うことができる

sdim hogehoge, 64, 10, 2
	:
sdim str_tmp, 1024
outarray str_tmp, hogehoge               // hogehoge のすべての値を複数行文字列として str_tmp に書き出し
cnvarray hogehoge, str_tmp, 4, 10, 5, 3  // hogehoge を整数型、3次元配列(10, 5, 3) に変換

ラベルを量産する labarray

ラベルを量産する labarray命令   (由来 : label array)

// string_var : 書き出し先の文字列型変数
// ary        : 書き出す文字列型配列変数
// in_val     : 代入値またはそれを格納した変数
// index      : 増減値
labarray string_var, ary, in_val, index


導入方法(Introduction)

.
├─ 02_myarray.hsp
│
├── 02_myarray
│   ├── 02_myarray.hs
│   ├── 02_1_PriSetOut.hsp
│   ├── 02_2_CnvOut.hsp
│   ├── 02_3_Cnv.hsp
│   ├── 02_4_Lab.hsp
│   ├── 02_5_Ctl.hsp
│   └── 02_myarray.txt
│
├── README.md
└── License.txt
  • 02_myarray.hsp をユーザースクリプトのディレクトリか、HSP のインストールディレクトリ下の commonフォルダ内において、02_myarray.hspをインクルードしてください。

      例) hsp37/common/02_myarray.hsp
    
  • 02_myarrayフォルダをHSPのインストールディレクトリ下にある doclibフォルダ内に02_myarrayフォルダごと 置いて下さい。サンプルファイルもそのままで構いません。

      例) hsp37/doclib/02_myarray
    

必要環境(Environment)

  • Windows10, 11
  • HSP3.6以上

使用言語(Coding Language)

開発環境(Development environment)

  • Windows11 Pro 22H2 x64
  • Hot Soup Processor 3.7beta4
  • Visual Studio Code ver 1.74.3

LICENSE

本ソフトウェアおよび関連文書のファイル(以下「ソフトウェア」)の複製を取得するすべての人に対し、ソフトウェアを無制限に扱うことを無償で許可します。

これには、ソフトウェアの複製を使用、複写、変更、結合、掲載、頒布、サブライセンス、および/または販売する権利、およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含まれます。

ソフトウェアは「現状のまま」で、明示であるか暗黙であるかを問わず、何らの保証もなく提供されます。ここでいう保証とは、商品性、特定の目的への適合性、および権利非侵害についての保証も含みますが、それに限定されるものではありません。

作者または著作権者は、契約行為、不法行為、またはそれ以外であろうと、ソフトウェアに起因または関連し、あるいはソフトウェアの使用またはその他の扱いによって生じる一切の請求、損害、その他の義務について何らの責任も負わないものとします。


謝 辞(SPECIAL THANKS)

  • HSPTV!掲示板の皆様

このモジュールは HSPTV!掲示板 の皆様によって支えられております。
この場を借りて感謝申し上げます。誠に有難うございます。

項 目 掲示板情報
Kind 宣 伝
Date 2023/01/16
Person Yuzranium
Pontent 多次元配列をなんやかんやする

項 目 掲示板情報 (過去ログ)
Date 2022/11/26
Pontent 多次元配列変数を複数行文字列に

更新履歴(Change Log)

var 0.27.1

2023/01/16

不具合修正

  • dimlinec関数のパラメータ条件式に抜けがあり、異常値の処理ができない不具合.

その他

  • ヘルプファイルに新規追加分の命令・関数の項目を追記、一部文言の修正。
  • 一部ソースコードの修正

ver 0.27

2023/01/09

新規追加命令・関数

  • dimlinec 関数
    • 各次元要素数から配列の先頭からのオフセット値を返す
  • linedim 命令
    • 配列の先頭からのオフセット値を各次元要素数に変換する

  • ctlarray_start 命令
    • ctlarrayの動作制御フィールドの開始
  • ctlarray_end 命令
    • ctlarrayの動作制御フィールドの終了
  • ctlexcld 命令
    • 動作制御フィールド内で制御の除外を行う

その他

  • 動作制御命令 ctlarray命令の調整
  • よく使う処理やイテレーター等の関数・命令化
  • モジュール内で使用する変数の一部変数名を修正
  • スクリプトの整備・修正

var 0.26.3

2022/12/30

  • priarray命令のラベル名取得機能完成
    また、同命令にモジュール型変数の指定時、モジュール名及び関連情報の表示機能を仮搭載 (※未完成)
  • labarray命令の追加に伴い、setarray命令をラベル型変数非対応に
    このバージョンからラベル型変数対応命令は priarray, outarray の2つとなる
  • エラーレポート機能の廃止

新規追加命令・関数

  • ctlarray 命令
    • priarray, setarray, outarray, labarray命令の各動作範囲を制御する
      (※試作段階のもので、本バージョンから試験導入)

(※以下、本モジュールの~array命令を補佐する付随命令・関数)

sortgetc 関数 sortgetの関数バージョン
twinsortary 命令 一方の配列のソートに合わせて他方もソート
bisrch 命令 二分木探索を行う
modlabget 関数 ラベル名・モジュール名取得

その他

  • モジュール内で使用する変数の変数名及び各命令・関数のエイリアス名の見直し
  • strf関数用書式文字列格納変数にモジュール情報用の書式追加(仮)
  • スクリプトの整備・修正

以下略

ver 0.26.1

2022/12/20
priarray命令にラベル型配列変数のラベル名表示機能を追加(2022/12/18現在、最適化できておらず)

  • 新規追加命令

    • outarray命令 の追加
      • 多次元配列変数の値のみを複数行文字列として書き出す
    • cnvarray命令 の追加
      • 複数行文字列、多次元配列変数を別の多次元配列変数へ変換する
    • labarray命令 の追加
      • 文字列型配列変数を複数行文字列として書き出し、ラベル型に変換する
  • その他

    • スクリプトの修正
    • コメント表示の書式微修正
    • 内部関数 ainfo_関数の命令化

ver 0.25

2022/12/07
書き出し命令 priarray命令 にコメント機能の追加
一括代入命令 setarray命令 に増減機能の追加
一部コードの改修


ver 0.24

2022/12/05
多次元配列変数への一括代入setarray命令の追加
値の書き出しができないラベル型、モジュール型、COMオブジェクト型を指定した際に変数の使用状況(varuse関数)とエラーレポートを表示する機能を追加


ver 0.23

2022/12/04
書き出し方法の大幅改良
一部スクリプトの効率化


ver 0.22

2022/12/01
配列情報の表示方法の変更


ver 0.21

2022/11/29
パラメーターの修正


ver 0.20

2022/11/26
ヘッダファイル、サンプルファイルの修正


ver 0.10

2022/11/25
初公開