■記事リスト / ▼下のスレッド
| ■15136 / 親記事) |
配列変数の扱いについて
|
□投稿者/ ジェダイの桐 -(2025/10/22(Wed) 17:46:01)
| 桐10s Windows10を使用しています。
◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇
知りたい事
配列変数は #対応番号 のような 要素数に対応する文字列で 要素数を取得する 関数が有るのか?
◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇
今やっている取得方法 例
変数宣言 自動,文字列{ &月名Dim[12] } 変数宣言 自動,文字列{ &targetNum } 変数宣言 自動,整数 { &i, &loop, &step = 1 }
&月名Dim = { "睦月","如月","弥生","卯月","皐月","水無月","文月", "葉月", "長月", "神無月", "霜月", "師走" }
&loop = #配列要素数( "月名Dim" )
繰り返し &i = 1, &loop, &step if ( &月名Dim[ &i ] = "葉月" ) &targetNum = #文字列( &i ) 繰り返し中止 end 繰り返し終了
◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇
こんにちは。
今やっている方法で、要素数を取得できているんですが、要素数が 257 あります。 なので、 #対応番号 のような関数があればなぁ・・・
と思い質問しました。
ヘルプを見てみたんですが、自分では見つける事が出来ませんでした。
お時間がある時、分かる方回答頂けたら幸いですm(__)m
|
|
|
▽[全レス10件(ResNo.6-10 表示)]
| ■15148 / ResNo.6) |
Re[4]: 配列変数の扱いについて
|
□投稿者/ ジェダイの桐 -(2025/10/24(Fri) 15:57:23)
| 2025/10/24(Fri) 16:21:38 編集(投稿者) 2025/10/24(Fri) 16:02:50 編集(投稿者) 2025/10/24(Fri) 16:00:05 編集(投稿者)
ONnojiさん
こんにちは。
>>257の配列に対して、必要であれば30回前後(動的に回数は変化します)チェックする事をやろうとしています。 > > 1.ひとつの配列変数を用意して、同じ配列変数を最大30回前後チェックするということでしょうか? > ・・・・・・・・・・・・・・・・・・・
そうでした。 しかし、回避方法を考えました(^^ゞ
> 2.それとも、チェックする配列変数はチェックする度に異なる配列変数になるのでしょうか?? > ・・・・・・・・・・・・・・・・・・
いえ。同一の配列変数です。
> ひょっとして、部品展開・逆展開のような事をやろうとしていますか??
やりたい事は、 ■14473 / inTopicNo.1) 主ウィンドウ と 補助ウィンドウについて と根本的に同じで 生産指示を入力したら、指示した製品に使用する在庫有無の取得です。
オペレータが生産指示をしても、材料在庫が無いと生産が出来ないのですが、 現状はオペレータが材料在庫が有るか無いかが分からないんです。
> もしも、1.ならば、配列変数の文字数に拠りますが、 > > 事前に半角コンマ区切りストリング(ひも:文字列)を生成すれば、#対応番号( )関数が使えますよ。
一番最初に カンマ区切りリスト 作成を試みました。 だけど、意図した値にならなかったんです。
文字数に引っかかったのだと思います。 ( これに関しては、最初から気にはなっていたんです・・・ )
それなら、配列にするか。と思ったんですが、要素番号取得に無駄打ちが多くなるせいか、 処理速度が若干気になる様になったんです。
それで、対応番号のような関数がないかと質問したのでした(^^ゞ
> もしも、半角コンマ区切りストリング(ひも:文字列)が4000文字を超える場合には、複数の変数にしてもいいですよ。 > > (例) > > 変数宣言 局所,文字列{ &mStringList1, &mStringList2, &mStringList3 } > または > 変数宣言 局所,文字列{ &mStringListDim[3] }
これに インスピレーションを受けて コードを作成しました。 但し、リストを固定で作るのではなく 動的に 作成したかったので 変則的なコードかな? って自分で思うのですが。 ( フォーム + イベント で固有変数を意図して使用する事が初めてです )
----------------------------------------------------------------------------------------------------------------------
名札 メイン 変数宣言 局所, 整数 { &mCNT }
* 手続き定義開始 prcGETウレタン在庫数List( 参照 数値 &当日在庫数Dim[], 数値 &loop ) 変数宣言 自動,文字列 { &title = "prcGETウレタン在庫数List()", &msg } 変数宣言 自動,文字列 { &comma = #jis( #hex("2C") ), &WQ = #jis( #hex("22") ) } 変数宣言 自動,整数 { &i, &step = 1 } 変数宣言 自動,整数 { &j } 変数宣言 自動,整数 { &traceON }
&traceON = 1 条件 ( &traceON ) トレース出力 &title + "を実行開始しました"
&当日在庫数Dim = { "" }
ジャンプ 行番号 = 先頭 ┌繰り返し &i = 1, &loop, &step │ &当日在庫数Dim[ &i ] = [当日在庫数] │ ジャンプ 行番号 = 次行 │ 条件 ( &traceON ) トレース出力 _&i, " ", _&当日在庫数Dim[ &i ] └繰り返し終了
ジャンプ 行番号 = 先頭 &j = 1 &mCNT = 1 コマンド "変数宣言 固有,文字列 { &gウレタン品名List" + #STR( &mCNT ) + " }"
┌繰り返し &i = 1, &loop, &step │┌if ( &j <= 100 ) ││ コマンド "&gウレタン品名List" + #STR( &mCNT ) + " = &gウレタン品名List" + #STR( &mCNT ) + " + #条件選択( &gウレタン品名List" + #STR( &mCNT ) + " <> #u, " + &WQ + &comma + &WQ + " ) + " + &WQ + [ウレタン品名] + &WQ ││ &j = &j + 1 │├else ││ &mCNT =&mCNT + 1 ││ コマンド "変数宣言 固有,文字列 { &gウレタン品名List" + #STR( &mCNT ) + " }" ││ コマンド "&gウレタン品名List" + #STR( &mCNT ) + " = &gウレタン品名List" + #STR( &mCNT ) + " + #条件選択( &gウレタン品名List" + #STR( &mCNT ) + " <> #u, " + &WQ + &comma + &WQ + " ) + " + &WQ + [ウレタン品名] + &WQ ││ &j = 2 │└end │ ジャンプ 行番号 = 次行 └繰り返し終了
条件 ( &traceON ) トレース出力 &title + "を実行終了しました"
手続き定義終了
手続き定義開始 prcGETウレタン仕入情報( 整数 &生産計画ウレタン部TbxNum, 日時 &targetDate, 参照 整数 &canProceed, 参照 文字列 &仕入ウレタン品名NumList, 整数 &loop ) /* &loop = &mCNT */ 変数宣言 自動,文字列 { &title = "prcGETウレタン仕入情報()", &msg } 変数宣言 自動,文字列 { &targetウレタン品名 } 変数宣言 自動,文字列 { &comma = #jis( #hex("2C") ) } 変数宣言 自動,整数 { &仕入計画ウレタン部TbxNum } 変数宣言 自動,整数 { &i, &step = 1, &offset, &targetNum } 変数宣言 自動,整数 { &traceON, &return, &logical }
&traceON = 1 条件 ( &traceON ) トレース出力 &title + "を実行開始しました"
&canProceed = 0 &仕入ウレタン品名NumList = #u
表 &mTbxFileName仕入計画ウレタン部, モード = 参照 &仕入計画ウレタン部TbxNum = #is表
検索 [納期] { = &targetDate }, 文字比較方法 = 自動, 部分一致検索 = しない, 自動調整 = しない, 終了状態 = &return ┌if ( &return = 1 ) │ 絞り込み [納期] { = &targetDate }, 文字比較方法 = 自動, 部分一致検索 = しない │ 条件 ( &traceON ) トレース出力 _&loop │ ジャンプ 行番号 = 先頭 │┌繰り返し ( .not #eof ) ││ &logical = 0 ││┌繰り返し &i = 1, &loop, &step │││ &targetウレタン品名 = [ウレタン品名] │││┌if ( &targetウレタン品名 <> "35×70×500" ) ││││ コマンド "&logical = #対応番号( &gウレタン品名List" + #STR( &i ) + ", &targetウレタン品名 )" ││││ 条件 ( &traceON ) トレース出力 _&logical ││││ 条件 ( &traceON ) トレース出力 "if ( &logical <> 0 ) : ", if ( &logical <> 0 ) ││││┌if ( &logical <> 0 ) │││││ &offset = ( &i - 1 ) × 100 │││││ &targetNum = &logical + &offset │││││ &仕入ウレタン品名NumList = &仕入ウレタン品名NumList + #条件選択( &仕入ウレタン品名NumList <> #u, &comma ) + #文字列( &targetNum ) │││││ 条件 ( &traceON ) トレース出力 _&i, " ", _&offset, " ", _&targetNum │││││ 条件 ( &traceON ) トレース出力 _&仕入ウレタン品名NumList ││←┼┼─繰り返し中止 ││││└end │││└end ││└繰り返し終了 ││ ジャンプ 行番号 = 次行 │└繰り返し終了 │ │ &canProceed = 1 └end
終了 表 &仕入計画ウレタン部TbxNum 編集表 &生産計画ウレタン部TbxNum
条件 ( &traceON ) トレース出力 &title + "を実行終了しました"
手続き定義終了
----------------------------------------------------------------------------------------------------------------------
意図した、&仕入ウレタン品名NumList の取得は出来ました(^^ゞ そして、処理速度も比較にならない程、早くなりました。
ところが、
> 配列変数にこだわらないで、表(.tbx)にデータを展開してもいいかもしれません。
うにんさんにも、同じアドバイスを受けたんですが、在庫表.tbx がある訳ですから、検索して #行番号 で取得すれば 同じ結果を求める事が出来たなと気付きました・・・
この思い込みは、自部署で且つ自分のPCで行う作業ではなく、自部署で自分のデータ(在庫表.tbx)を他部署(生産指示を出す部署)へ 渡して行う作業の為、何故か発想を難しくしていたからだと思います。
とは言え、頭の体操にもなり今までの自分では考えつかない、動的な文字列リスト取得方法が分かって勉強になった事は事実なのです。
アドバイスありがとうございましたm(__)m 今回の経験は、財産になると思います!
p.s.
他部署のフォーム( サブフォーム有り )の為、Thin_INF_Framework は組み込んでいませんm(__)m
|
|
|
| ■15150 / ResNo.7) |
Re[5]: 配列変数の扱いについて
|
□投稿者/ ONnoji -(2025/10/24(Fri) 16:27:08)
| 2025/10/25(Sat) 16:21:44 編集(投稿者)
> 他部署のフォーム( サブフォーム有り )の為、Thin_INF_Framework は組み込んでいませんm(__)m
確か・・・、メインフォームにだけ適用すれば使えるハズですよ。 ・・・・・・・・・・・・・・・・・・・・・・
サブフォームに組み込まなければOKのハズだったと・・・(^^ゞ ・・・・・・・・・・・・・・・・・・・・
◇ ◇ ◇ ◇ ◇ ◇ ◇
桐の釣魚大全のトップ > フォームアプリケーション教書 第2部 https://silicon7565.cloudfree.jp/guide/guide_Part2.htm#section37-4 37.4 INF_Framework とメイン&サブフォーム
拙作:INF_Framework は、当初はメイン&サブフォームでも動作するようになっていました。 しかし、メイン&サブフォームでは局所変数が上書きされるために、メイン側とサブフォーム側のフォーカスが切り替わるたびに、 テキストデータを外部へ値を出力して、保存してあったテキストデータを読み込んでというスワップ動作をしていました。 しかし、手間が掛かる割には、メイン&サブフォームを利用することが非常に少ないので第3版から完全にスワップ動作を中止しました。 これによって第3版では、メインフォームだけにしか拙作:INF_Framework を導入出来なくなりました。 ※サブフォーム側に拙作:INF_Framework を導入しようとしても、自動的に検知して導入をキャンセルするようになっています。
|
|
|
| ■15158 / ResNo.8) |
Re[6]: 配列変数の扱いについて
|
□投稿者/ ONnoji -(2025/10/25(Sat) 11:42:02)
| 2025/10/26(Sun) 11:31:27 編集(投稿者)
>>他部署のフォーム( サブフォーム有り )の為、Thin_INF_Framework は組み込んでいませんm(__)m > > 確か・・・、メインフォームにだけ適用すれば使えるハズですよ。 > ・・・・・・・・・・・・・・・・・・・・・・ > > サブフォームに組み込まなければOKのハズだったと・・・(^^ゞ > ・・・・・・・・・・・・・・・・・・・・ > > サブフォーム側からメインフォームのコマンドボタンをメソッドで実行すれば・・・ > > Thin_INF_Framework のランチャーとか使えるでしょ。アハハハハha
試してみました。
・メインフォームに Thin_INF_Framework を導入する
・サブフォームには Thin_INF_Framework を導入しない ・・・・・・・・・・・・・・・・・・・・・・・・
状態で、サブフォームのイベント処理(.kex)に以下のプロシージャを作成する
手続き定義開始 cmdメインの実行Click( ) 変数宣言 自動,文字列{ &icon, &title = "cmdメインの実行Click( )", &msg }
メソッド呼び出し ハンドル = &hwindow, @INFcmdWhoAreYou.実行( ) /* メインフォームに配置されたコマンドボタンを実行 */
メソッド呼び出し ハンドル = &hwindow, @cmdテストClick.実行( ) /* メインフォームに配置されたコマンドボタンを実行 */
手続き定義終了
↑このように[実行]メソッドが実行出来ますよ。
メインフォームのオブジェクトを指定する場合には、ハンドル = &hwindow パラメータが必要です。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
p.s.
メイン&サブフォームだから Thin_INF_Framework が使えないというのは誤解・迷信ですよ。
メインフォームでは普通に使えますよ。
サブフォームでは INF_Framework のプロシージャが実行出来ないので、サブフォームからメインフォームのコマンドボタンをメソッドで実行してください。
サブフォームに導入できない理由は、サブフォームの[名札 メイン]でINF_FW の局所変数が上書きされるからです。
メイン&サブフォームというのは、複数のイベント処理(.kex)がオープンされるわけです。
だから、うっかりするとサブフォームのイベント処理(.kex)の[名札 メイン]で同名の局所変数が上書きされるわけです。
こういう所に気を付けなければならないので結構神経使いますよ。
p.p.s.
当初はサブフォームでも EZW機能( 項目の列固定やスクロール )が使いたかったのです。
しかし、Thin_INF_Framework は、EZW機能( 項目の列固定やスクロール )が出来ないサブセットなワケですから、
局所変数の上書きにだけ注意すればいいとカナと割り切れますね。
|
|
|
| ■15160 / ResNo.9) |
Re[7]: 配列変数の扱いについて
|
□投稿者/ ジェダイの桐 -(2025/10/27(Mon) 09:27:49)
| ONnojiさん
おはようございます。
> ・メインフォームに Thin_INF_Framework を導入する > ・サブフォームには Thin_INF_Framework を導入しない > ・・・・・・・・・・・・・・・・・・・・・・・・
> メイン&サブフォームだから Thin_INF_Framework が使えないというのは誤解・迷信ですよ。 > メインフォームでは普通に使えますよ。
> サブフォームに導入できない理由は、サブフォームの[名札 メイン]でINF_FW の局所変数が上書きされるからです。 > メイン&サブフォームというのは、複数のイベント処理(.kex)がオープンされるわけです。 > だから、うっかりするとサブフォームのイベント処理(.kex)の[名札 メイン]で同名の局所変数が上書きされるわけです。 > しかし、Thin_INF_Framework は、EZW機能( 項目の列固定やスクロール )が出来ないサブセットなワケですから、 > 局所変数の上書きにだけ注意すればいいとカナと割り切れますね。
なるほど。 私は間違った認識をしていました。
メインフォームのみに組み込めば、使用が可能なのですね。
認識を改めます。
p.s.
Thin_INF_Framework とは全く関係なく、私自身の問題なのですが、 やはり、サブフォームがシックリきません・・・ ( 苦手意識が有ります・・・ )
|
|
|
| ■15161 / ResNo.10) |
Re[8]: 配列変数の扱いについて
|
□投稿者/ ONnoji -(2025/10/27(Mon) 16:44:35)
| > やはり、サブフォームがシックリきません・・・ > ( 苦手意識が有ります・・・ )
もちろん、個人の感想ですが・・・(^^ゞ
以下同文、だなぁ〜。アハハハha。 ・・・・
以上
|
|
|
■記事リスト /
レス記事表示 →
[親記事-9]
[10-10]
|