無(無参照)かどうかの簡単な判定法

投稿者:碁盤鮫 投稿日:2020/08/28(Fri) 16:16:09 No.2599

(不具合か迷いましたが、一応こちらで。。)

「あるオブジェクトが無かどうか」を判断するには、

  もし〜が無なら、〜

のようにするのが普通の方法だ、と思っています。私の目についた限りでの公式のプログラム例では、そうなっていました。(「無」に関してマニュアルでどうなっていたか今ちょっと確認できていません。)

しかし実は(少なくともスミレ畑では)、「空文字列」や「0」もまた「無と等しい」と解釈されるようになっているため、正確な判定法とは言えないと思います。

ーーーーーーーーーー サンプルプログラム
「空文字列は無で、無は空文字列?! [「」が無かつ無が「」]」と報告
「0は無で、無は0?! [0が無かつ無が0]」と報告
「無は空白?! [無が空白である]」と報告
「無は文字?! [無が文字である]」と報告
ーーーーーーーーーーーーーーーーーーーー

ーーーーーーーーーー スミレ畑(Sumire 1.7.1016)での実行結果
空文字列は無で、無は空文字列?! ○
0は無で、無は0?! ○
無は空白?! ○
無は文字?! ○
ーーーーーーーーーーーーーーーーーーーー

実際、「〜として入力する」という手順(これもマニュアルで見つ以下略。。)の結果が「キャンセル」だったのか「空文字列でOK」だったのかを戻り値から判定しようとすると、この問題につまずくと思います。

厳密に「無だけ」を検出するために、例えば、わざわざ例外監視文でエラーを捕捉する、というのも大げさな気がします。

そういうわけですので、どなたか何かよい方法をご存じでしたらご教示いただけますと幸いです。。

[2020/08/29 追記] 読み返していたところ、ふと、だったら

  もし某は「」かつ某は0なら、〜

でよいのでは……、と思いつきました。

ーーーーーーーーーー サンプルプログラム
「0は厳密に無? [0がム]」と報告
「空文字列は厳密に無? [「」がム]」と報告
「無は厳密に無? [無がム]」と報告
「未定義変数の値は厳密に無? [_未定義変数_がム]」と報告

[某]が、ムの手順
  [某が0かつ某が「」]を返す
終わり
ーーーーーーーーーーーーーーーーーーーー

しかし、直感的ではありませんね。。

Re^2: マウスのサイドボタンに関して

投稿者:凡骨 投稿日:2020/08/15(Sat) 16:45:46 No.2598

ゆうとさん回答ありがとうございます。

教えていただいたサンプルで調べることができました。
ありがとうございました。
またお世話になることもあると思いますがよろしくお願いいたします。

Re: マウスのサイドボタンに関して

投稿者:ゆうと 投稿日:2020/08/15(Sat) 15:00:59 No.2597

こんにちは。

5ボタンマウスの戻ると進むのボタンは、
「マウスのボタンが離された時の手順」などで「この時のボタン」で調べることができます。

マウス製品によってはキーボードとしても認識されている場合がありますので
その場合には「キーが押された時の手順」で調べられると思います。

参考にしてください。

--------------------
メイン画面を表示する
待機する
メイン画面とは
  ウィンドウを継承する
はじめの手順
  初期化する
  ーー貼り付けた部品に対する操作をここに書きます
終わり
初期化する手順
  ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
    この実質大きさを{428,394}に変える
    この内容を「メイン画面」に変える
    初期化開始する
    初期化終了する
    この設計スケール比率を{144,144}に変える
終わり

  マウスのボタンが離された時の手順
    この時のボタンを報告する
  終わり
終わり
--------------------

Re: 設計スケール比率を使ってください

投稿者:若人 投稿日:2020/08/13(Thu) 22:59:49 No.2596

こんばんは、いつもお世話になっております。

お返事ありがとうございます。

早速試し、問題を解決できました。

ありがとうございました。

マウスのサイドボタンに関して

投稿者:凡骨 投稿日:2020/08/13(Thu) 11:37:58 No.2595

マウスのサイドボタンはどのように表記すればいいのでしょうか?
マウスの左右やホイールなどはありましたがサイドボタンの表記がなくてどうしたらいいか途方に暮れています。
何処かに説明されているならページのみでもいいので教えていただけたら幸いです。
ちなみにサイドボタンはゲーミングなどではなく2つのボタンのものです。
そういえばホイールでのクリックもどのような表記何でしょうか。

どうぞよろしくおねがいします。

Re^2: プロジェクトモードでの相互指定方法は

投稿者:しのけん 投稿日:2020/08/10(Mon) 11:58:11 No.2594

ご回答ありがとうございます。
下記内容については、一応理解したつもりで、複数のプログラムに分けて
目的のものを作ろうとしたのですが、うまく行きません。
プロジェクトモードでの相互参照に、特別な制限、条件等があるのかと
疑問に思い、質問しました。

> プロジェクトモードの場合、プロジェクトにプログラムを追加すれば
> 自動的に相互参照されます。
> (イメージとしてはプロジェクトに追加したプログラムが
> ひとつづきのプログラムとまとめられて解釈されます)
>
> そのため、特にrdrファイル名を指定する必要はありません。
>
> なお、プロジェクトモードでない場合には、
> > 「PJsub.rdr」を参照する
> などと書くと参照されます。
>
最初の質問に上げたサンプルで試しても、期待通りの動きになりません。
実行した操作は以下のような手順ですが、どこで間違ってるかが分かりません。

1)ファイルメニューから新規作成/プロジェクトで「PJtest.rdrproj」を作る
2)アウトラインで「PJtest.rdrproj」を右クリック
  プロジェクト/既存ファイルから追加/PJmain.rdrを指定
3)同様に、PJsub.rdrを指定
4)PJmain.rdrを右クリック/「最初に実行する」を選択
5)メニューの「実行」
  ⇒main画面を表示
6)ボタン[B_main]をクリック
  ⇒【PJmain】という小さいウィンドウが表示される・・・?
   (期待する結果は「sub画面を表示する」にもかかわらず)

不明点:プログラムの「B_mainがクリックされた時の手順」にある
    「subを表示する」がその通りには解釈されていない?
     ↑ PJsub.rdr側で記述した「subとは」が参照されない?

なお、
2つのプログラムを別々に開き、PJmain.rdr側に
「PJsub.rdr」を参照する
の文を追加しても結果は同様です。
「はじめの手順」に追加、及び
「B_mainがクリックされた時の手順」に追加
を試してみましたが、駄目でした。

マニュアル、ガイドページ/ワンページマニュアル等を色々探しましたが、
詳細説明、解決方法が見つからず、ご教示いただくと幸いです。
よろしくお願いいたします。

ありがとうございます。

投稿者: 投稿日:2020/08/10(Mon) 08:36:21 No.2593

 お世話になります。

 機能追加していただき、ありがとうございます。
 先ほど1.7.1011で確認できました。
 ありがとうございました。

 以上、今後ともよろしくお願いいたします。

正規表現の無害化

投稿者:ゆうと 投稿日:2020/08/10(Mon) 01:33:48 No.2592

こんにちは ゆうとです。
いつもお世話になっております。

1.7.1011にて正規表現で「無害化する」手順を追加しました。

ご活用ください。

Re: プロジェクトモードでの相互指定方法は

投稿者:ゆうと 投稿日:2020/08/10(Mon) 00:51:18 No.2591

こんにちは ゆうとです。

プロジェクトモードの場合、プロジェクトにプログラムを追加すれば
自動的に相互参照されます。
(イメージとしてはプロジェクトに追加したプログラムが
ひとつづきのプログラムとまとめられて解釈されます)

そのため、特にrdrファイル名を指定する必要はありません。

なお、プロジェクトモードでない場合には、
> 「PJsub.rdr」を参照する
などと書くと参照されます。

参考になれば幸いです。

設計スケール比率を使ってください

投稿者:ゆうと 投稿日:2020/08/10(Mon) 00:45:12 No.2590

こんにちは ゆうとです。
お世話になっております。

起動しているPCでのディスプレイの表示スケールは、設計スケール比率で取得できます。
例えば96が100%で、144が150%です。

新規に「ウィンドウの設計」でウィンドウを作成すると分かりやすいかと思いますが
「はじめ」の手順にて、開発したPCの設計スケール比率を設定しておくと、
開発したPCと起動したPCの表示スケールが異なる場合に比率の差を計算して
部品の大きさを自動的に調整してくれます。

多くの場合は、「設計スケール比率」設定項目を設定しておけば問題ないと思いますが
個別に計算する必要がある場合には、設定項目の結果を使って計算してください。

お試しください。

▲ページの先頭へ

- WebForum -