分類について

  • このトピックには7件の返信、2人の参加者があり、最後にyuzuki1010により5年、 1ヶ月前に更新されました。
8件の投稿を表示中 - 1 - 8件目 (全8件中)
  • 投稿者
    投稿
  • #5565
    yuzuki1010
    参加者

    お疲れ様です。
    工程の分類を繰り返し制御と等価演算、論理値格納変数を使用して、作ってみましたが警報がでてしまいます。
    内容
    テーブルの工程の重複を確認するサブルーチンで、等価演算で左右にセル値を設定し、演算結果がtrue(重複)であれば文字列に論理値trueを設定する。重複でないならfalseになります。

    次に、手順書番号取得の繰り返し制御で、右に重複の結果、左に固定でfalseを入れて、演算結果がtrue(重複なし)であれば行を追加し、セル値を設定し、行を増やしています。

    ここのセルの値を設定するがデバックで確認するとうまくできていませんでした。
    デバックだけでは警報の原因が分からず、ご指導お願いします。

    #5567
    yuzuki1010
    参加者

    すみません。もう一つファイルを添付し忘れました。

    #5569
    MZPlatformユーザー会
    キーマスター

    MZアプリを添付する際に、MZASファイル(の圧縮ファイル)を添付するのはおやめください。こちらのファイル形式は、バージョンが変われば開けなくなるバイナリファイルとなっております。普段からMZAXファイルを編集するようにしてください。

    今回エラーが発生した原因は、ID:112の手順書テーブル行番号に値が入っていないからです。どこかで初期値としての0を設定しないと、値を取得するときにエラーが発生しまし、値を増やすことはできません。

    また、今回デバッグしてもわからない理由として、引数を「メソッド戻り値」で指定することも一因です。何かの値や処理結果を使いたい場合は、なるべく先にメソッド起動で実行して、引数を「メソッド処理結果」で指定するように心がければ、どこで問題が発生しているかが少しわかりやすくなります。

    #5570
    yuzuki1010
    参加者

    ありがとうございます。一番初めに作成した時はうまくいって二回目以降できていなかったので初期化が原因ではないかと考えていました。
    しかし、整数格納変数の初期値を0にするというのがよくわかりません。
    テーブルに行数を取得し、整数格納変数に入れると全体の行数になる為うまくいかないのでしょうか?リスト形式で取得なら[0,1,2,…]となりますが。

    整数格納変数の行数の初期値を0に設定する方法を教えてください。

    #5571
    MZPlatformユーザー会
    キーマスター

    元のアプリケーションの中であれば、ID:108の手順書が設定済みか確認するサブルーチンの中で、論理値格納変数を初期化しているように、繰り返し処理を実行する前にID:112の手順書テーブル行番号を0にします。メソッドは例えば「数値を文字列で設定する(String)」で引数を0にします。

    ちなみに、元のアプリケーションの中でこのID:112の手順書テーブル行番号の変数は余計で、使わなくても同じ処理が実現できます。この変数の値を使っている場所は手順書テーブルに行を追加してセルの値を設定するときですが、そこで必要な行位置は手順書テーブルのメソッド「最終行の位置を取得する()」で得られます。

    #5573
    yuzuki1010
    参加者

    ご指導ありがとうございます。
    メソッド「最終行の位置を取得する」の使い方を覚えておきます。
    初期値を0にできるようにしてみました。

    0列目のNUMのセルの値[1,2,3,4,…]を取得し、整数格納変数に入れて、値を1減らすにし[0,1,2,3,…]にして、初期値を設定しました。
    制御も一応デバック上では理想通り動いてくれていますが、手順書番号重複チェックの指定セルの値を取得するで警報が発生しています。
    ここでしたいことは手順書テーブルの指定行を繰り返し右オペに設定し、左オペに文字列を設定し、等価演算しています。
    デバックで直前まで文字列が入っていました。
    警報が発生している理由がわかりません。

    #5575
    MZPlatformユーザー会
    キーマスター

    エラーが出ている理由は、エラーの内容を読んで考えましょう。
    こちらで中身を読むと、明らかにエラーが出るように処理が書かれています。
    追加した行のセルに書き込みたいのでしょうが、実際は範囲外の行に書き込もうとしてエラーが発生しています。

    変数を使うのをやめた方が良いのではないでしょうか。
    テーブルの最終行位置を使うのが確実ですし、繰り返し制御には「現在値を取得する()」もあります。

    #5576
    yuzuki1010
    参加者

    すみません。色々ありがとうございました。
    もう一度変数を使わずにじっくり考えてみます。

8件の投稿を表示中 - 1 - 8件目 (全8件中)
  • このトピックに返信するにはログインが必要です。