投稿者:KNIGHT 投稿日:2024/02/25(Sun) 10:40:32 No.2952
こんにちは、御世話になります。
ラベルに「」を含めた文章を入力すると、実行時にエラーが出ます。
それで、以下のように
〜〜〜
その内容を「「はい」と答えた場合」に変える
▼
その内容を「[「]はい[」]と答えた場合」に変える
〜〜〜
に変更して実行すると、とりあえずうまく実行できるのですが、
〜〜〜〜
待機する
メイン画面とは
ウィンドウを継承する
はじめの手順
初期化する
ーー貼り付けた部品に対する操作をここに書きます
終わり
初期化する手順
ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
初期化開始する
この内容を「メイン画面」に変える
この文字色を「標準の文字」に変える
ラベル1というラベルを作る
その位置と大きさを{23,13,133,20}に変える
その内容を「[「]はい[」]と答えた場合」に変える
その文字色を「標準の文字」に変える
初期化終了する
終わり
終わり
〜〜〜〜
次にデザイナーから別の部品(以下のプログラムではテキスト部品)を追加すると、修正した箇所が自動的に元のエラーの出るプログラムに戻ってしまいます。
〜〜〜〜
メイン画面を表示する
待機する
メイン画面とは
ウィンドウを継承する
はじめの手順
初期化する
ーー貼り付けた部品に対する操作をここに書きます
終わり
初期化する手順
ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
初期化開始する
この内容を「メイン画面」に変える
この文字色を「標準の文字」に変える
テキスト1というテキストを作る
その位置と大きさを{34,31,154,19}に変える
その移動順を1に変える
ラベル1というラベルを作る
その位置と大きさを{23,13,133,20}に変える
その内容を「「はい」と答えた場合」に変える
その文字色を「標準の文字」に変える
初期化終了する
終わり
終わり
〜〜〜〜
以上のように
その内容を「[「]はい[」]と答えた場合」に変える
▼
その内容を「「はい」と答えた場合」に変える
に自動的に変更されてしまいます。
せっかく修正した箇所が、修正前の状態に戻ってしまって、部品を追加するたびにエラーになってしまいます。
また、
その内容を「「「はい」」」&「の場合」に変える
と修正した場合でも、上記と同様に一旦はうまく実行できるのですが、
部品を追加すると
▼
その内容を「「はい」と答えた場合」に変える
と自動修正がかかって、また実行時にエラーが出ます。
基本的に、ラベルには「」を含む文字列は設定してはいけないのでしょうか?
それとも、プロデルの自動修正自体が予想外の動作なのでしょうか?
よろしくお願いいたします。
投稿者:アーク 投稿日:2024/02/24(Sat) 17:21:57 No.2950
ゆうとさん、こんにちは。アークです。
〉いずれにしても、プロデルには直接関連がなく
ワードパッド等では普通に使えてしまうのでプロデル側の処理が必要なのかと思った次第です。
プロデルに関係が無いので有れば此方でお聴きする事では無いので他を検討する事にします。
お手数をお掛けして申し訳ありませんでした。
投稿者:アーク 投稿日:2024/02/24(Sat) 17:10:11 No.2949
ゆうとさん、こんにちは。アークです。
〉具体的にはsedでどのような操作をしているのでしょうか。
「sed」の件は余計な事を書いてしまいました。
私が「sed」を使いだしたのはアスキーの緑本からなので昔の話です。
仕事で大量のテキスト成型をする必要があったので常用していました。
組版用の元原稿の処理で単なる敬体・常体の成型だけではなく、
組版用のタグの自動挿入や置換後の文字列の並び如何でさらに置換が必要になるなど、
通常の使用とは大分異なる使い方です。
当然、ワンライナー等では到底済む話ではなく10〜30行にもなるスクリプトファイルが必要でした。
それでも「sed」ならあっという間に処理が終了したので愛用していました。
普通はそこまで必要はないでしょうから現状で問題は無いです。
投稿者:KNIGHT 投稿日:2024/02/24(Sat) 11:54:30 No.2948
こんにちは
結局のところ、ウィンドウ(タブページ)内に配置した保存したい入力項目というのは、テキスト、テキスト領域、オプション、チェックボックスの4種類だけなので、とりあえずは、「タブページ1の子部品一覧を部品へそれぞれ繰り返す」と「プロデる」の組み合わせで、うまく保存と再現、クリアができるようになりました。
JSON形式で保存するには、「改行」を含むテキスト領域の内容については、「改行」を「\n」に置き換えて保存し、再現時に元に戻せばよいのでしょうか?
〜〜〜〜
メイン画面を表示する
待機する
メイン画面とは
ウィンドウを継承する
はじめの手順
初期化する
ーー貼り付けた部品に対する操作をここに書きます
終わり
初期化する手順
ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
初期化開始する
この実質大きさを{485,424}に変える
この内容を「メイン画面」に変える
この文字色を「標準の文字」に変える
タブフレーム1というタブフレームを作る
その位置と大きさを{9,13,331,409}に変える
その見出しサイズを{65,18}に変える
その移動順を19に変える
その文字色を「標準の文字」に変える
タブページ1というタブページをタブフレーム1へ作る
その位置と大きさを{4,22,323,383}に変える
その内容を「タブページ1」に変える
その文字色を「標準の文字」に変える
その背景色を「透明」に変える
その余白を{3}に変える
チェックボックス2というチェックボックスをタブページ1へ作る
その位置と大きさを{24,198,104,17}に変える
その内容を「映画が好き」に変える
その移動順を8に変える
その文字色を「標準の文字」に変える
その背景色を「透明」に変える
チェックボックス7というチェックボックスをタブページ1へ作る
その位置と大きさを{27,330,99,24}に変える
その内容を「チェックボックス7」に変える
その移動順を18に変える
その文字色を「標準の文字」に変える
その背景色を「透明」に変える
テキスト1というテキストをタブページ1へ作る
その位置と大きさを{77,19,93,19}に変える
その移動順を10に変える
チェックボックス6というチェックボックスをタブページ1へ作る
その位置と大きさを{26,306,100,18}に変える
その内容を「チェックボックス6」に変える
その移動順を17に変える
その文字色を「標準の文字」に変える
その背景色を「透明」に変える
テキスト2というテキストをタブページ1へ作る
その位置と大きさを{77,44,93,19}に変える
その移動順を1に変える
チェックボックス5というチェックボックスをタブページ1へ作る
その位置と大きさを{26,277,100,23}に変える
その内容を「チェックボックス5」に変える
その移動順を16に変える
その文字色を「標準の文字」に変える
その背景色を「透明」に変える
テキスト領域1というテキスト領域をタブページ1へ作る
その位置と大きさを{132,221,179,134}に変える
その移動順を2に変える
チェックボックス4というチェックボックスをタブページ1へ作る
その位置と大きさを{25,247,101,24}に変える
その内容を「チェックボックス4」に変える
その移動順を15に変える
その文字色を「標準の文字」に変える
その背景色を「透明」に変える
オプション1というオプションをタブページ1へ作る
その位置と大きさを{24,69,70,19}に変える
その内容を「既婚」に変える
その移動順を3に変える
そのフォーカス移動可能を○に変える
その文字色を「標準の文字」に変える
その背景色を「透明」に変える
チェックボックス3というチェックボックスをタブページ1へ作る
その位置と大きさを{24,222,83,19}に変える
その内容を「スポーツ好き」に変える
その移動順を14に変える
その文字色を「標準の文字」に変える
その背景色を「透明」に変える
オプション2というオプションをタブページ1へ作る
その位置と大きさを{24,94,70,26}に変える
その内容を「独身」に変える
その移動順を4に変える
そのフォーカス移動可能を○に変える
その文字色を「標準の文字」に変える
その背景色を「透明」に変える
ラベル1というラベルをタブページ1へ作る
その位置と大きさを{12,22,59,19}に変える
その内容を「名前」に変える
その移動順を5に変える
その文字色を「標準の文字」に変える
その背景色を「透明」に変える
ラベル2というラベルをタブページ1へ作る
その位置と大きさを{12,47,42,18}に変える
その内容を「出身県」に変える
その移動順を6に変える
その文字色を「標準の文字」に変える
その背景色を「透明」に変える
チェックボックス1というチェックボックスをタブページ1へ作る
その位置と大きさを{24,171,118,21}に変える
その内容を「ドラマが好き」に変える
その移動順を7に変える
その文字色を「標準の文字」に変える
その背景色を「透明」に変える
ラベル3というラベルをタブページ1へ作る
その位置と大きさを{132,195,66,14}に変える
その内容を「趣味」に変える
その移動順を9に変える
その文字色を「標準の文字」に変える
その背景色を「透明」に変える
タブページ2というタブページをタブフレーム1へ作る
その位置と大きさを{4,22,323,383}に変える
その内容を「タブページ2」に変える
その移動順を1に変える
その文字色を「標準の文字」に変える
その背景色を「透明」に変える
その余白を{3}に変える
ボタン3というボタンを作る
その位置と大きさを{377,310,67,25}に変える
その内容を「クリア」に変える
その移動順を13に変える
その文字色を「標準の文字」に変える
ボタン2というボタンを作る
その位置と大きさを{377,381,72,26}に変える
その内容を「復元」に変える
その移動順を12に変える
その文字色を「標準の文字」に変える
ボタン1というボタンを作る
その位置と大きさを{377,349,72,26}に変える
その内容を「保存」に変える
その移動順を11に変える
その文字色を「標準の文字」に変える
初期化終了する
タブフレーム1の一覧を{「タブページ1」,「タブページ2」}に変える
終わり
ーー[保存]ボタンをクリックした時
ボタン1がクリックされた時の手順
設定値は「」
タブページ1の子部品一覧を部品へそれぞれ繰り返す
もし 部品が「テキスト」を含むなら 設定値は、設定値&「[部品の名前]の内容は、[「][部品の内容][」][改行]」
もし 部品が「チェックボックス」を含むなら 設定値は、設定値&「[部品の名前]の状態は、[「][部品の状態][」][改行]」
もし 部品が「オプション」を含むなら 設定値は、設定値&「[部品の名前]の状態は、[「][部品の状態][」][改行]」
そして
「[プログラムの位置]タブ1設定値.dat」に設定値を保存する
終わり
ーー[読み出し]ボタンをクリックし時
ボタン2がクリックされた時の手順
ーープログラムをロードして実行する
設定値復元は「[プログラムの位置]タブ1設定値.dat」から読み込んだもの
設定値復元をプロデる
終わり
ーー[クリア]ボタンをクリックし時
ボタン3がクリックされた時の手順
タブページ1の子部品一覧を部品へそれぞれ繰り返す
もし 部品が「テキスト」を含むなら 部品の内容は「」
もし 部品が「チェックボックス」を含むなら部品の状態は「なし」
もし 部品が「オプション」を含むなら部品の状態は「×」
そして
終わり
終わり
〜〜〜〜
投稿者:KNIGHT 投稿日:2024/02/24(Sat) 09:26:00 No.2947
ゆうとさま、お返事をありがとうございます。
> 部品の個数がさほど多くない場合は、冗長に書いてしまってよいように思います。
TTSneoで作成した時には力ずくで「冗長に」書いていたのですが、プロデルに移植する際に、もう少しスマートにできないのかなと思っての質問なのです。
> そもそも、プログラムが長くなるほどたくさんのテキスト部品を貼り付ける必要があるのでしょうか。
私が作ろうとしているシステムは、検診業務に相当するような内容なので、とにかく入力項目がたくさん必要なのです。
https://knight1112jp.seesaa.net/article/201201article_21.html?1708732166
TTSneoで作成したプログラム(上記リンク)では、タブ1には、チェックボックス、テキスト、オプションなどの入力項目が、150 個ほどもあるのです。
> プロデルはオブジェクト指向ですので、次のように書いて、
> タブページ内の部品を列挙してそれらを繰り返しクリアすることもできます。
> -------------
> タブページ1の子部品一覧を部品へそれぞれ繰り返す
> 部品の内容は「」
> そして
> -------------
なるほど「子部品一覧」という配列が使用できるのですね。ただ、これだと、ラベルとか、チェックボックスの付帯文字列とかもすべて空白になってしまってまずいのですが、
〜〜〜
タブページ1の子部品一覧を部品へそれぞれ繰り返す
もし 部品が「テキスト」を含むなら 部品の内容は「」
もし 部品が「チェックボックス」を含むなら部品の状態は「なし」
もし 部品が「オプション」を含むなら部品の状態は「×」
そして
〜〜〜
初期状態になるように「内容」や「状態」を部品の種類ごとに設定すればよいのですね。これで、だいぶん、「力ずくのコーディング」からスマートになって、全体のプログラムサイズもコンパクトにできそうです。
大いなるヒントをいただきありがとうございました。
今後ともよろしくお願いいたします。
投稿者:KNIGHT 投稿日:2024/02/24(Sat) 08:19:32 No.2946
おはようございます。お返事をありがとうございます。
> 今どきという点であれば、JSON形式がよいと思います。
> https://produ.irelang.jp/docs/data/json.htm
> また、TTSneo流でいけば「設定」関数・「設定」手順に相当する
> 「設定ファイル」種類があります。
> https://produ.irelang.jp/docs/file/inifile.htm
いろいろと試してみたいと思います。ありがとうございました。
投稿者:KNIGHT 投稿日:2024/02/24(Sat) 08:01:21 No.2945
ゆうとさま、お返事をありがとうございます。
> 未定義語(未知語)の扱いについては、
> 1.9のリリース直後にエラーとするように仕様変更したのですが
> ユーザのフィードバックなど1.7との互換性の観点で、元に戻した経緯があります。
> この時は1.7との互換性を優先しましたが、本仕様がとっつきにくさを引き起こしているのであれば、今後のバージョンで明確に仕様変更することを検討します。
よろしくお願いいたします。
> 具体的にはどのようなメッセージでしょうか。何か顕著なメッセージや、表現があれば改善します。
先に挙げた「HTMLからのタグ削除」の件でも、
〜〜〜〜
>文章は「<head>header</head><body>content</body>」
>文章は、正規表現で文章から「<[^>]+>」を「」へ置換したもの
〜〜〜〜
プロデルでは、「ここに演算子を書くことができません。」とエラーメッセージが出ます。このエラーメッセージからは、ヒアドキュメント形式に気付くことはできませんでした。せめて、「式展開を必要とする場所に演算子のみを書くことはできません。」とかであれば、気付けたかもしれません。
> ごもっともなご意見でありますが、言うほど簡単ではないです。
そうですよね。ユーザーは無理難題を言ってしまいます。すみません。
> 一番の問題として、プロデル初心者の操作を、私が付き添って見ているわけではないので・・・
> ぜひエラーメッセージに関しても、何が意味不明かなど具体的なフィードバックをお願いします。
遭遇するエラーをできるだけフィードバックさせていただこうと思います。
今後ともよろしくお願いいたします。
投稿者:KNIGHT 投稿日:2024/02/24(Sat) 07:39:14 No.2944
おはようございます。
ゆうとさま、お返事をありがとうございます。
> ---------------
> 文章は「<head>header</head><body>content</body>」
> 文章は、正規表現で文章を「「<[^>]+>」」から「」へ置換したもの
> 文章を報告する
> ---------------
ご指南の通りにやってみて上手く行きました。ありがとうございました。
> > プロデルでもTTSneoと同様な正規表現置換ができることを強く望みます。
同様にできるのですね。ヒアドキュメント形式にしなくてはいけないことに気付きませんでした。
> プロデルはTTSneoよりも便利な正規表現操作ができていると認識していますので、何か誤解されていると思います。
すみません。そうですね、誤解でした。
1つ目は、ヒアドキュメント形式で記述が必要であることに気付かなかったこと。
2つ目は、「から・を・へ」使い方に配慮が足りなかったこと。
です。
プロデルマニュアルの
文字列の文法>ヒアドキュメント> の項に
「ヒアドキュメントを使うことで例えば、正規表現やSQLを書く目的で文字列定数を使う場合に[や]の記号を配慮せずに指定できます。」と記載されているのをなんとなく読んでいましたが、肝心なところで気付きませんでした。
基本機能>正規表現> の項にも
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
プロデルでは、「[」や「]」が式展開を示す特殊な意味を持つので、正規表現パターンの記述内で「[」や「]」を使用する場合には、ヒアドキュメント形式(つまり、二重括弧「「【正規表現パターン】」」)でパターンを指定することによって、式展開を抑止するように記述する必要があります。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
といような、解説(注意書き)があると、私のような初歩的な躓きが少なくなるかなと思います。
> 意外と、私としては大した問題ではないと思っていることで躓くのですね...
> 参考にしたいと思います。
よろしくお願いいたします。
投稿者:ゆうと <yutopia utopiat.net> 投稿日:2024/02/24(Sat) 01:49:18 No.2943
こんにちは。コメントありがとうございます。
> なんのエラーも出ない。でも、なぜ、「みかん」 が報告されないのか?
未定義語(未知語)の扱いについては、
1.9のリリース直後にエラーとするように仕様変更したのですが
ユーザのフィードバックなど1.7との互換性の観点で、元に戻した経緯があります。
https://produ.irelang.jp/bbs/qa/wforum-rdr.cgi?mode=read&no=2783&reno=2776&oya=2776
この時は1.7との互換性を優先しましたが、本仕様がとっつきにくさを引き起こしているのであれば、今後のバージョンで明確に仕様変更することを検討します。
> プロデルを使っていて、エラーメッセージが意味不明なことが多いです。
具体的にはどのようなメッセージでしょうか。何か顕著なメッセージや、表現があれば改善します。
> 意味不明だから、対処の仕方が分からない。いろいろと試行錯誤してみても、相変わらず意味不明のエラーしか出ない。だから、もう使うのをやめようかな。って思ってしまいます。初心者が躓くようなところで、教育的なエラーメッセージが出るようになればいいのになあ、って思います。
ごもっともなご意見でありますが、言うほど簡単ではないです。
一番の問題として、プロデル初心者の操作を、私が付き添って見ているわけではないので、
どのようなプログラムを書いて、どのようなエラーに遭遇しているかを知るすべがありません。
多くの場合、諦めてしまっているか、自己解決されているだと思いますが
フィードバックをもらうか、かなりの想像力を働かせないと、
なかなか、気の利いたエラーメッセージに直すことが難しいです。
まずはエラーメッセージに関しても優先して改善が必要そうだということは認識しましたので
検討します。
ぜひエラーメッセージに関しても、何が意味不明かなど具体的なフィードバックをお願いします。
投稿者:ゆうと <yutopia utopiat.net> 投稿日:2024/02/24(Sat) 00:33:11 No.2942
こんにちは。
今どきという点であれば、JSON形式がよいと思います。
https://produ.irelang.jp/docs/data/json.htm
JSON形式は、配列や辞書をテキスト化したり、その逆が容易ですので、TTSneoの頃のCSVファイルの扱いに感覚的に近いと思います。
また、TTSneo流でいけば「設定」関数・「設定」手順に相当する
「設定ファイル」種類があります。
https://produ.irelang.jp/docs/file/inifile.htm
「プロデる」は、データを書き換えると
任意のコードを実行できてしまうというセキュリティ上の問題があるので公開するようなソフトウェアではお勧めできません。
(個人で使う分にはよいと思いますが)
- WebForum -