; ; HSP help manager用 HELPソースファイル ; (先頭が「;」の行はコメントとして処理されます) ; %type 内蔵命令 %ver 2.61 %note ver2.61標準命令 %date 2004/03/01 %author onitama %url http://www.onionsoft.net/ %index getstr バッファから文字列読み出し %group 文字列操作命令 %prm p1,p2,p3,p4 p1=変数 : 内容を読み出す先の変数名 p2=変数 : バッファを割り当てた変数名 p3=0〜 : バッファのインデックス(Byte単位) p4=0〜255 : 区切りキャラクタのASCIIコード %inst メモリ上のバッファの任意の場所にある内容を文字列として変数に 読み出します。文字列は、00というコードか、改行コードがある まで読み出されます。改行コードは文字列には含まれません。 ^ また、区切りキャラクタコードを指定することができ任意の文字で 区切られた文字列を取り出すこともできます。 ^ この命令で読み出されたByte数は自動的にstrsizeというシステム 変数に代入されます。strsizeは、次のインデックスまでの移動量 を得る時に使用します。 ^ たとえば、変数bのバッファに 'A' 'B' 'C' ',' 'D' 'E' 'F' 00(終了コード) というデータが入っている場合、 ^p getstr a,b,0,',' ^p を実行すると、変数aの内容は、 'A' 'B' 'C' の部分が読み出されて"ABC"という文字列に なり、strsizeは4になります。 ^ この命令は、複数行を含むテキスト文字列データや、特定の文字で 区切られたデータを効率よく切り出すためのものです。 複数行を含むテキストを扱うためには、他にもメモリノートパッド命令セット があります。また、文字列から特定数の文字を取り出すためには、 strmid命令が用意されています。 %href strmid %index noteadd 指定行の追加・変更 %group 文字列操作命令 %prm p1,p2,p3 p1=文字列 : 追加・変更をする文字列または変数名 p2=0〜(-1) : 追加するインデックス p3=0〜1(0) : 追加・上書きモード指定 %inst メモリノートパッドの内容を追加・変更します。 ^ p1に追加・変更するための文字列を指定します。p2で、対象となるインデックスを指定します。 p2パラメータを省略するか、-1を指定すると最終行が対象になります。 p3パラメータで、追加か上書きかを指定します。省略するか、0を指定すると、 追加モードとなり、対象となるインデックス以降が1つづつシフトします。 p3が1の場合は、上書きモードとなり、対象となるインデックスの内容は消去され、 指定した文字列に置き換えられます。 ^ noteaddは、変数バッファにsdim命令などであらかじめ確保された容量を超えて 内容を追加しようとした場合でも、自動的に確保容量を増加させて格納します。 つまり、「sdim a,64」で64文字までしか記憶できないメモリバッファであっても、 noteadd命令であれば、追加するサイズに応じて自動的にメモリサイズを調節して安全に記憶 させることができます。(通常の代入命令で行なった場合はバッファオーバーフローのエラーとなります) ^ メモリノートパッド命令(noteget,noteadd,notedel,notemax)を使用するためにはは、 最初にnotesel命令で対象となるバッファを設定しなければなりません。 %href notesel %sample sdim a,10000 notesel a noteadd "newidx1" noteadd "newidx3" noteadd "newidx2",1 mes a stop %index notedel 行の削除 %group 文字列操作命令 %prm p1 p1=0〜 : 削除するインデックス %inst メモリノートパッドの指定したインデックスを削除します。 p1で指定したインデックスの内容は削除され、以降のインデックスが1つづつシフトします。 ^ メモリノートパッド命令(noteget,noteadd,notedel,notemax)を使用するためには、 最初にnotesel命令で対象となるバッファを設定しなければなりません。 %href notesel %index noteget 指定行を読み込み %group 文字列操作命令 %prm p1,p2 p1=変数 : 読み出し先の変数名 p2=0〜(0) : 読み出すインデックス %inst メモリノートパッド内の、p1で指定したインデックスの内容をp1で指定された変数に代入します。 メモリノートパッド内の任意の行にある内容を読み出すことができます。 ^ インデックスは0から始まるので注意してください。 p1で指定する変数には、読み出すのに十分なバッファを確保するのを忘れないでください。 また、p1の変数は強制的に文字列型に変更されます。 ^ メモリノートパッド命令(noteget,noteadd,notedel,notemax)を使用するためにはは、 最初にnotesel命令で対象となるバッファを設定しなければなりません。 %href notesel %sample a="idx0\nidx1\nidx2" notesel a noteget b,1 mes b stop %index notemax 最大行数取得 %group 文字列操作命令 %prm p1 p1=変数名 : 最大行を読み出す先の変数名 %inst 現在、対象となっているメモリノートパッド全体の行数を調べ、p1で指定した変数に代入します。 ^ 全体の行数とは、つまりメモリノートパッド内にある要素の数です。 「APPLE」「ORANGE」「GRAPE」という行がある場合には、3になります。 この場合、インデックスは0〜2までになります。 ^ notemax命令は、複数行の文字列ですべての行の処理を行ないたい場合などに使用します。 メモリノートパッド命令(noteget,noteadd,notedel,notemax)を使用するためにはは、 最初にnotesel命令で対象となるバッファを設定しなければなりません。 %href notesel %sample nmax=0 alloc a,32000 bload "aaa.txt",a notesel a notemax nmax idx=0 repeat nmax noteget b,idx print "index"+idx+"="+b idx++ loop stop %index notesel 対象バッファ指定 %group 文字列操作命令 %prm p1 p1=変数 : バッファを割り当てた変数名 %inst p1で指定した変数をメモリノートパッド命令のバッファに設定します。 ^ p1で指定した変数は、強制的に文字列型に変更されます。 他のメモリノートパッド命令(noteget,noteadd,notedel,notemax)を使用するためにはは、 最初にnotesel命令で対象となるバッファを設定しなければなりません。 %href noteget noteadd notedel notemax %sample alloc a,10000 notesel a noteadd "test strings" mes a stop %index strlen 文字列の長さを調べる %group 文字列操作命令 %prm p1,p2 p1=変数 : 文字列の長さを読み出す先の変数名 p2=変数 : 文字列の長さを調べたい文字列型の変数名 %inst p2で指定された文字列型変数が持っている文字列の長さをp1に代入します。 文字列が日本語の全角だった場合は、1文字でも2文字分に計算されます。 %index strmid 文字列の一部を取り出す %group 文字列操作命令 %prm p1,p2,p3,p4 p1=変数名 : 取り出した文字列を格納する変数名 p2=変数名 : 取り出すもとの文字列が格納されている変数名 p3=0〜(0) : 取り出し始めのインデックス p4=0〜(0) : 取り出す文字数 %inst p2で指定した文字列型変数の中から、p3,p4で指定した条件で 文字を取り出し、p1で指定された変数に代入します。 p3で取り出し始めるインデックスを指定します。これは、文字列の 始まり1文字目を0として、1,2,3...と順番に増えていくものです。 1から始まりではないので注意してください。 p4で取り出す文字数を指定します。実際に格納されている文字数 よりも多く指定した場合は、実際の文字数までが取り出されます。 また、p3に-1を指定すると文字列の右からp4で指定した文字数だけ 取り出します。 %sample b="ABCDEF" strmid a,b,-1,3 ; 右から3文字を取り出す strmid a,b,1,3 ; 左から2文字目から3文字を取り出す %index instr 文字列の検索をする %group 文字列操作命令 %prm p1,p2,"string",p3 p1=変数名 : 検索の結果が代入される変数名 p2=変数名 : 検索される文字列が格納されている文字列型変数名 "string" : 検索する文字列 p3=0〜(0) : 検索を始めるインデックス %inst p2で指定した文字列型変数の中に、"string"で指定した文字列が あるかどうか調べて、p1で指定した変数にインデックスを代入 します。 ^ 指定した文字列が見つかった場合には、p1で指定された変数に インデックスが代入されます。これは、文字列の始まり1文字目を0として、 1,2,3...と順番に増えていくものです(strmid命令で指定するインデックス と同様です)。1から始まりではないので注意してください。 (p3を指定した場合、p1に代入されるインデックスは、p3を起点(0)とするものになります。) もし、指定した文字列が見つからなかった場合には-1が代入されます。 ^ p3で調べ始めるインデックスを指定することができます。指定を省略 した場合は、最初(0)からになります。 %href strmid %index notesave 対象バッファ保存 %group 文字列操作命令 %prm "filename" "filename" : 書き込みファイル名 %inst メモリノートパッド命令のバッファの内容を指定したファイルにテキスト ファイルとして保存します。 必ず最初にnotesel命令で対象となるバッファを設定する必要があるので注意してください。 notesave命令は、指定バッファに含まれる文字列の長さを調べて、それに応じたサイズで テキストファイルとして保存します。 %href notesel noteload noteget noteadd notedel notemax %index noteload 対象バッファ読み込み %group 文字列操作命令 %prm "filename",p1 "filename" : 読み込みファイル名 p1(0) : 読み込みサイズの上限値 %inst 指定したファイルをメモリノートパッド命令のバッファに読み込みます。 通常は、テキストファイルを読み込み、メモリノートパッド命令で読み出す 対象とします。メモリノートパッド命令のバッファは、自動的にファイルの サイズに従って確保サイズが調節されるため、バッファのサイズをあらかじめ 指定しておく必要はありません。 p1で、読み込むファイルの最大サイズを指定することができます。 指定を省略またはマイナス値にした場合は、どんなサイズでも読み込みます。 テキストファイル以外のファイルを読み込むことも可能です。 必ず最初にnotesel命令で対象となるバッファを設定する必要があるので注意してください。 %href notesel notesave noteget noteadd notedel notemax %index getpath パスの一部を取得 %group 文字列操作命令 %prm p1,p2,p3 p1=変数名 : 結果を格納する変数名 p2=文字列 : 取り出す元の文字列 p3=0〜(0) : 情報のタイプ指定 %inst p2で指定した変数に格納されているファイルパスなどを示す文字列を p3で指定したタイプの情報に変換して、p1に指定された変数に代入します。 ^p 例: a="c:\\disk\\test.bmp" getpath b,a,8+1 mes b ↓(結果) "test"となる ^p タイプ指定の詳細は以下の通りです。 ^p タイプ 内容 ----------------------------------------------------------- 0 文字列のコピー(操作なし) 1 拡張子を除くファイル名 2 拡張子のみ(.???) 8 ディレクトリ情報を取り除く 16 文字列を小文字に変換する 32 ディレクトリ情報のみ ^p タイプ値は、合計することで複数指定を行なうことが可能です。 タイプ16が指定された場合は、すべての英文字列を小文字に変換します。 %href getstr instr