myarray
マイ・アレイ
多次元配列変数をなんやかんやする、なんてことないモジュール
不具合報告や要望等は HSPTV!掲示板 で頂けると幸いです。
今後の予定
- 辞書的なもの
-
bisrch
命令,MDABiSrch
命令の文字列型対応 -
ctlarray
命令をはじめとした制御系命令の調整 - モジュール型変数への対応
- 多次元配列の結合と分離 (※半分妄想)
特徴(Feature)
- 標準命令のみで動作し、変数名、ラベル名、モジュール名の表示等が可能.
- 1次元、2次元、3次元、4次元、全ての次元に対応.
- ラベル型、文字列型、実数型、整数型に対応.
- 配列の途中から値の書き出し、連続代入、配列コピー、型変換、次元の拡張・収縮、配列演算が可能.
- 多次元配列を1次元化(平坦化)し、1次元配列のように扱う.
情報を書き出す 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)
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
計算する calc_ary
多次元配列どうしの計算を行う calc_ary
命令 (由来 : calculate array)
// ans_ary : 計算結果を受け取る変数名
// ary1, ary2 : 変数名
// calc_type : 演算タイプ
// error_stop : 0除算フラグ (= 0, 0:停止しない / 1:停止する)
calc_ary ans_ary, ary1, ary2, calc_type, error_stop
- 加算( + )、減算( - )、乗算( * )、除算( / )、剰余( \ )、実数指定での割増・割引計算、百分率指定での割増・割引計算が可能
- 計算の種類はカスタム可能
- HSP3の言語仕様に合わせて
ans_ary
はary1
の変数型と各次元要素数で初期化 - 文字列型、実数型、整数型のみ対応
その他
- 配列動作制御
ctlarray
命令 - 制御フィールド開始
ctlarray_start
命令 - 制御フィールド終了
ctlarray_end
命令 - 制御の除外
ctlexcld
命令
- 多次元配列を1次元化した要素数を返す
dimlinec
関数 - 1次元化した要素数から元の各次元要素数を返す
linedim
命令
- 多次元配列の線形探索
MDALiSrch
関数 - 多次元配列の二分木探索
MDABiSrch
命令
試作中
- 多次元配列を1次元配列として扱う
uniary
関数 - 複数の多次元配列を オフセットで まとめて扱う
union_d
関数 - 複数の多次元配列を 値で まとめて扱う
union
関数 union
,union_d
関数の書式設定を行うunifrmt
命令
導入方法(Introduction)
各モジュールの説明
-
myarray_core モジュール (02_myarray_core.hsp)
ほぼすべての命令・関数の中核を担うイテレータなどを内部命令化・関数化し、定義する本プロジェクト最重要モジュール。
linedim命令、dimlinec関数やその他内部命令・関数を含む6つの命令・関数郡からなる。 -
myarray_list モジュール (02_myarray_list.hsp)
このモジュールは主に多次元配列を1次元配列として扱うものや、配列をリストのように扱うといったデータ管理用途の機能を集めたものです。
未だ開発途中で実験的なのもでもあり、今後の開発やアップデートの中心になリます。 -
myarray_srch モジュール (02_myarray_srch.hsp)
ソートや線形探索・二分木探索など、ユーザーに提供する一部機能の前処理を行う、local指定を含む7つの命令・関数郡からなるモジュール。
MDALiSrch関数、MDABiSrch命令等を含む。 -
myarray モジュール (02_myarray.hsp)
これまで通り、ユーザー提供機能をまとめたモジュール。
ラベル型変数、モジュール型変数へのアクセスを行うポインタ関連、配列制御関連の内部命令、pri, set, out, cnv, labarray命令の各内部命令とマクロ、配列演算命令など。
.
├─ 02_myarray_core.hsp
├─ 02_myarray_list.hsp
├─ 02_myarray_srch.hsp
├─ 02_myarray.hsp
│
├── 02_myarray
│ ├── 02_myarray_list.hs
│ ├── 02_myarray_srch.hs
│ ├── 02_myarray.hs
│ ├── 02_1_PriSetOut.hsp
│ ├── 02_2_CnvOut.hsp
│ ├── 02_3_Cnv.hsp
│ ├── 02_4_Lab.hsp
│ ├── 02_5_Ctl.hsp
│ ├── 02_6_Calc.hsp
│ ├── 02_7_Dict_test.hsp
│ └── 02_myarray.txt
│
├── README.md
└── License.txt
- 02_myarray_core.hsp
- 02_myarray_list.hsp
- 02_myarray_srch.hsp
- 02_myarray.hsp
- 02_myarrayフォルダ
上記の4つのファイルをユーザースクリプトのディレクトリか、HSP のインストールディレクトリ下の commonフォルダ内において、02_myarray.hsp
をインクルードしてください。02_myarrayフォルダをHSPのインストールディレクトリ下にある doclibフォルダ内に02_myarrayフォルダごと 置いて下さい。サンプルファイルもそのままで構いません。
例)
├─ hsp37
├─ common
│ ├─
│ ├─ 02_myarray_core.hsp
│ ├─ 02_myarray_list.hsp
│ ├─ 02_myarray_srch.hsp
│ ├─ 02_myarray.hsp
│
├─ doclib
│ ├─ 02_myarrayフォルダ
// インクルードするのは 02_myarray ファイルだけ
#include "02_myarray.hsp"
必要環境(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)
ver 0.28
2023/02/01
新規追加命令・関数
名称 | 種別 | 概要 |
---|---|---|
uniary |
関数 | 多次元配列を 1次元配列 として扱う |
uniformat |
命令 | union_dとunion関数の出力書式の設定変更 |
union_d |
関数 | 複数の配列を オフセット でまとめる |
union |
関数 | 複数の配列を 値 でまとめる |
MDALiSrch |
関数 | 多次元配列の 線形探索 を行う |
---|---|---|
MDABiSrch |
命令 | 多次元配列の 二分木探索 を行う |
修正・変更
- priarray命令のモジュール型変数の情報表示ができない不具合の修正
- outarray命令のマクロ登録を削除 (今まで通り利用可)
- calc_ary命令内で呼び出され、実際に配列どうしの計算を行うcalc_var_ary(local)関数の名称を cpu_ary_へ変更
- cpu_ary_関数の計算内容の分岐方法を、if-else:if による比較から、gotoとラベル型変数を利用したラベルジャンプの分岐法に変更_myarray_init_(local)命令内で 管理用変数を ldim cpu_jump, 15 として定義( cpu_jump(0)~(8)までを使用、cpu_jump(9)以降は空き)
-
myarrayモジュールの肥大化に伴い、同モジュールを以下のようにファイルごと分割することとした。(それぞれ重要度順に記す)
-
myarray_core モジュール (02_myarray_core.hsp)
ほぼすべての命令・関数の中核を担うイテレータなどを内部命令化・関数化し、定義する本プロジェクト最重要モジュール。linedim命令、dimlinec関数やその他内部命令・関数を含む6つの命令・関数郡からなる。
-
myarray_list モジュール (02_myarray_list.hsp)
このモジュールは主に多次元配列を1次元配列として扱うものや、配列をリストのように扱うといったデータ管理用途の機能を集めたものです。未だ開発途中で実験的なのもでもあり、今後の開発やアップデートの中心になリます。
-
myarray_srch モジュール (02_myarray_srch.hsp)
ソートや線形探索・二分木探索など、ユーザーに提供する一部機能の前処理を行う、local指定を含む7つの命令・関数郡からなるモジュール。MDALiSrch関数、MDABiSrch命令等を含む。
-
myarray モジュール (02_myarray.hsp)
ユーザー提供機能をまとめたモジュール。ラベル型変数、モジュール型変数へのアクセスを行うポインタ関連、配列制御関連の内部命令、pri, set, out, cnv, labarray命令の各内部命令とマクロ、配列演算命令など。
-
ver 0.27.3
2023/01/21
新規追加命令・関数
calc_ary
命令- 配列演算 (四則演算、剰余、割増・割引計算、カスタム可)
calc_continue
命令- 演算継続命令
その他
- サンプルファイルの追加
- スクリプトの整備・修正
以下略
ver 0.27.1
2023/01/16
不具合修正
- dimlinec関数のパラメータ条件式に抜けがあり、異常値の処理ができない不具合.
その他
- ヘルプファイルに新規追加分の命令・関数の項目を追記、一部文言の修正。
- 一部ソースコードの修正
ver 0.27
2023/01/09
新規追加命令・関数
dimlinec
関数- 各次元要素数から配列の先頭からのオフセット値を返す
linedim
命令- 配列の先頭からのオフセット値を各次元要素数に変換する
ctlarray_start
命令ctlarray
の動作制御フィールドの開始
ctlarray_end
命令ctlarray
の動作制御フィールドの終了
ctlexcld
命令- 動作制御フィールド内で制御の除外を行う
その他
- 動作制御命令 ctlarray命令の調整
- よく使う処理やイテレーター等の関数・命令化
- モジュール内で使用する変数の一部変数名を修正
- スクリプトの整備・修正
ver 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
初公開