条件分岐とキー入力送信について

投稿者:ビター 投稿日:2024/10/22(Tue) 16:47:08 No.45

先般は大変ありがとうございました。
またプログラミングを進めたのですが、2つわからない点が出てきました。

まず、1つめは条件分岐中の条件分岐についてです。
下記のように、日付と入力文字列でフォルダを作成するプログラムを作成しました。
入力がない場合は日付フォルダだけ作成するという動作をします。
------------
「作成するフォルダ名は?」と聞いて、結果とする

日付を日時形式化して頭文字とする
頭文字の先頭から2文字消して作成日とする
作成日の3文字目から1文字消して作成日とする
作成日の5文字目から1文字消して作成日とする
作成日の7文字目から8文字消して作成日とする

もし結果が空白なら「[作成日]」というフォルダをデスクトップに作成
そうでなければ 「[作成日]_[結果]」というフォルダをデスクトップに作成
------------------
最後の「作成」がピンク色なのが気になりますが、一応動作するようです。
ただ、できれば、結果が空白かつ「[作成日]」のフォルダが存在する時、結果が空白でなく「[作成日]_[結果]」のフォルダが存在する時、それぞれ「重複する」旨のメッセージを表示して作成をキャンセルしたいのです。
この場合、もし、結果が空白なら、の直後に
他でもし結果が空白かつ「[作成日]」というフォルダが存在するなら...
を追加しても動作しないようなのです。if文の直下にさらにif...とする方法はないのでしょうか?


もう一つは下記のようにFキーにコピペコマンドを割り当てるものです
--------------
キーが押された時の手順
  この時のキー名が「F1」なら
    「^c」を入力する
  他でこの時のキー名が「F2」なら
    「^v」を入力する
  他でこの時のキー名が「F3」なら
    「^x」を入力する
  他でこの時のキー名が「F4」なら
    「^v」を入力する
---------------
こちらはまったく動作できず、お手上げでした…。

長文で大変恐縮ですが、お力添えいただけると幸いです。
よろしくお願いいたします

Re: 条件分岐とキー入力送信について

投稿者:アーク 投稿日:2024/10/22(Tue) 19:23:21 No.46

ビター さん

「なるほど、各ブロックごとに終わりを入れないといけないのですね。」とあったので、
理解されたと思っていたのですが…。今回も閉じられていません。

もし結果が空白なら「[作成日]」というフォルダをデスクトップに作成
そうでなければ 「[作成日]_[結果]」というフォルダをデスクトップに作成

この部分は、

もし結果が空白なら
 「[作成日]」というフォルダをデスクトップに作成
そうでなければ
 「[作成日]_[結果]」というフォルダをデスクトップに作成
もしおわり

と書きましょう。
焦らずに着実に進むようにしましょう。

〉もう一つは下記のようにFキーにコピペコマンドを割り当てるものです
こちらも「終わり」が書かれていません。

Re^2: 条件分岐とキー入力送信について

投稿者:ビター 投稿日:2024/10/23(Wed) 11:03:13 No.47

アーク さん

ありがとうございます。ご指摘の通り「終わり」をすっかり忘れていました…。
フォルダ作成については、条件分岐を下記のようにすることで動作するようになりました。
---------------
もし結果が空白かつ「[作成日]」というフォルダがデスクトップに存在するなら
  「重複です」と表示
他で結果が空白なら
  「[作成日]」というフォルダをデスクトップに作成
他で「[作成日]_[結果]」というフォルダがデスクトップに存在するなら
  「重複です」と表示
そうでなければ
  「[作成日]_[結果]」というフォルダをデスクトップに作成
もし終わり
-----------------


キー送信側は終わりを付け加えてもやはりだめでした。
(動作していることが分からなくなるので、ダミーの空ウインドウを表示させるようしました)
----------------
メイン画面を表示する
待機する
メイン画面とは
  ウィンドウを継承する
  はじめの手順
    この内容は「Fキー割り当て」
  終わり

  キーが押された時の手順
    この時のキー名が「{F1}」なら
      「^c」を入力する
    他でこの時のキー名が「{F2}」なら
      「^v」を入力する
    他でこの時のキー名が「{F3}」なら
      「^x」を入力する
    他でこの時のキー名が「{F4}」なら
      「^v」を入力する
  終わり
終わり
---------------------
ピンクの文字こそ出ていないのですが、根本的に間違っているのでしょうか?
何度もすみません。

Re^3: 条件分岐とキー入力送信について

投稿者:アーク 投稿日:2024/10/23(Wed) 14:46:38 No.48

ビター さん

確かに最近では「もし」を付けない書き方が許容されていますが、
初心者の方にはお薦めしません。
プログラムを日本語で書けるところがプロデルの特徴ですが、
反面、プログラムとそうでない部分の区別が付きにくくなります。

「もし終わり」が抜けています。
初心者の方は下記のように書きましょう。

  キーが押された時の手順
    もしこの時のキー名が「F1」なら
      「^c」を入力する
    他でもしこの時のキー名が「F2」なら
      「^v」を入力する
    他でもしこの時のキー名が「F3」なら
      「^x」を入力する
    他でもしこの時のキー名が「F4」なら
      「^v」を入力する
    もし終わり
  終わり

この方が構文が一目で分かるのでメンテナンス時にも楽です。
同じ事を毎回書きたくは無いので閉じていない件に関しては今後は触れません。

「キーが押された時の手順」自体も誤解されているようです。
この場合の「キー」はウィンドウに対応しています。
ウィンドウから何かをコピーしたりペーストする時の書き方です。

ウィンドウにテキスト領域を配置して、
「テキスト領域1のキーが押された時の手順」とすればテキスト領域1のキーを拾います。
対象のオブジェクト指定する必要が有ります。

また、「この時のキー名」について「{F1}」や「F1」と混乱しているようですが、
キーを入力する時は特殊キーは「{F1}」のように書きますが、
「この時のキー名」はテキストなので「F1」となります。

只、「Ctrl+C」と打つところを「F1」に変える必要が有るのでしょうか。

Re^4: 条件分岐とキー入力送信について

投稿者:ビター 投稿日:2024/10/23(Wed) 17:03:24 No.49

アーク さん

ありがとうございます。また、終わりが抜けていましたね…。
キーが押された時の手順は、プロデルのウインドウに対して、といった動作になるのですね。
てっきり、プロデルが動いている間、どんなウインドウに対しても共通で動くのかと勘違いしていました。

作ろうとしていたのはファンクションキーのF1やF2を押すことで、
Ctrl+CやCtrl+Vのショートカットキー動作を、Fキー1つで代理実行する、といったものです。
(例えばWordの文章をF1キーでコピーし、ExcelにF2キーでペースト、といった感じのイメージです)

仕事で大量かつ細かく分けて、文章を連続でコピペをする必要があるので、普通にショートカットでやると、Ctrlを押すタイミングがずれた時に「C」や「V」の文字が入力されることがあります。
それを防ぐための補助ツールを想定していました。

ただ、説明を読む限り、これを実現するのはかなり難しそうですね。
WordとExcel以外にも色々なアプリケーション間でコピペをしますので…。

せっかくアドバイスを頂いたのに残念ですが、この分は一旦、諦めることにします。
ありがとうございました。

Re^5: 条件分岐とキー入力送信について

投稿者:アーク 投稿日:2024/10/23(Wed) 22:29:31 No.50

ビター さん

〉ただ、説明を読む限り、これを実現するのはかなり難しそうですね。
初心者が挑戦するには難易度が高いです。
しかし、プロデルで作れない訳では無いです。

取り合えずその機能を実現したプログラムを積んでおきました。
これを起動するとF1からF3のキーを乗っ取ってしまうので、
使い終わったらタスクトレイから終了させてください。
作り方の説明は私のサイトに掲載する予定です。

Re^6: 条件分岐とキー入力送信について

投稿者:ビター 投稿日:2024/10/24(Thu) 09:30:57 No.51

アーク さん

ありがとうございます。作りたかったものは、まさにこういう動作でした。

アプリケーションを問わず動作できるので、
こういったキー操作の機能は結構、需要があると思うのです。
アーク様のサイトで説明をアップ頂けると、私以外でも助かる人は多いのではないかと思いますので、よろしくお願いします。

▲ページの先頭へ

- WebForum -