MZ Platformとは › 掲示板 › MZプラットフォームユーザー会掲示板 › 分類について
- このトピックは、 7 返信、 2 投稿者 です。最終更新日: 5 年, 8 ヶ月 前 yuzuki1010
-
著者投稿
-
2019年3月6日 at 10:44 AM #5565yuzuki1010一般参加者
お疲れ様です。
工程の分類を繰り返し制御と等価演算、論理値格納変数を使用して、作ってみましたが警報がでてしまいます。
内容
テーブルの工程の重複を確認するサブルーチンで、等価演算で左右にセル値を設定し、演算結果がtrue(重複)であれば文字列に論理値trueを設定する。重複でないならfalseになります。次に、手順書番号取得の繰り返し制御で、右に重複の結果、左に固定でfalseを入れて、演算結果がtrue(重複なし)であれば行を追加し、セル値を設定し、行を増やしています。
ここのセルの値を設定するがデバックで確認するとうまくできていませんでした。
デバックだけでは警報の原因が分からず、ご指導お願いします。2019年3月6日 at 10:47 AM #5567yuzuki1010一般参加者すみません。もう一つファイルを添付し忘れました。
2019年3月8日 at 5:23 PM #5569MZPlatformユーザー会サイト管理者MZアプリを添付する際に、MZASファイル(の圧縮ファイル)を添付するのはおやめください。こちらのファイル形式は、バージョンが変われば開けなくなるバイナリファイルとなっております。普段からMZAXファイルを編集するようにしてください。
今回エラーが発生した原因は、ID:112の手順書テーブル行番号に値が入っていないからです。どこかで初期値としての0を設定しないと、値を取得するときにエラーが発生しまし、値を増やすことはできません。
また、今回デバッグしてもわからない理由として、引数を「メソッド戻り値」で指定することも一因です。何かの値や処理結果を使いたい場合は、なるべく先にメソッド起動で実行して、引数を「メソッド処理結果」で指定するように心がければ、どこで問題が発生しているかが少しわかりやすくなります。
2019年3月11日 at 12:43 PM #5570yuzuki1010一般参加者ありがとうございます。一番初めに作成した時はうまくいって二回目以降できていなかったので初期化が原因ではないかと考えていました。
しかし、整数格納変数の初期値を0にするというのがよくわかりません。
テーブルに行数を取得し、整数格納変数に入れると全体の行数になる為うまくいかないのでしょうか?リスト形式で取得なら[0,1,2,…]となりますが。整数格納変数の行数の初期値を0に設定する方法を教えてください。
2019年3月11日 at 4:13 PM #5571MZPlatformユーザー会サイト管理者元のアプリケーションの中であれば、ID:108の手順書が設定済みか確認するサブルーチンの中で、論理値格納変数を初期化しているように、繰り返し処理を実行する前にID:112の手順書テーブル行番号を0にします。メソッドは例えば「数値を文字列で設定する(String)」で引数を0にします。
ちなみに、元のアプリケーションの中でこのID:112の手順書テーブル行番号の変数は余計で、使わなくても同じ処理が実現できます。この変数の値を使っている場所は手順書テーブルに行を追加してセルの値を設定するときですが、そこで必要な行位置は手順書テーブルのメソッド「最終行の位置を取得する()」で得られます。
2019年3月12日 at 3:09 PM #5573yuzuki1010一般参加者ご指導ありがとうございます。
メソッド「最終行の位置を取得する」の使い方を覚えておきます。
初期値を0にできるようにしてみました。0列目のNUMのセルの値[1,2,3,4,…]を取得し、整数格納変数に入れて、値を1減らすにし[0,1,2,3,…]にして、初期値を設定しました。
制御も一応デバック上では理想通り動いてくれていますが、手順書番号重複チェックの指定セルの値を取得するで警報が発生しています。
ここでしたいことは手順書テーブルの指定行を繰り返し右オペに設定し、左オペに文字列を設定し、等価演算しています。
デバックで直前まで文字列が入っていました。
警報が発生している理由がわかりません。2019年3月12日 at 7:34 PM #5575MZPlatformユーザー会サイト管理者エラーが出ている理由は、エラーの内容を読んで考えましょう。
こちらで中身を読むと、明らかにエラーが出るように処理が書かれています。
追加した行のセルに書き込みたいのでしょうが、実際は範囲外の行に書き込もうとしてエラーが発生しています。変数を使うのをやめた方が良いのではないでしょうか。
テーブルの最終行位置を使うのが確実ですし、繰り返し制御には「現在値を取得する()」もあります。2019年3月13日 at 4:53 PM #5576yuzuki1010一般参加者すみません。色々ありがとうございました。
もう一度変数を使わずにじっくり考えてみます。 -
著者投稿
- このトピックに返信するには、ログインしてください。