Re^2: 配列を定義するとき文字列は・・・

投稿者:ゆうと <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との互換性を優先しましたが、本仕様がとっつきにくさを引き起こしているのであれば、今後のバージョンで明確に仕様変更することを検討します。

> プロデルを使っていて、エラーメッセージが意味不明なことが多いです。
具体的にはどのようなメッセージでしょうか。何か顕著なメッセージや、表現があれば改善します。

> 意味不明だから、対処の仕方が分からない。いろいろと試行錯誤してみても、相変わらず意味不明のエラーしか出ない。だから、もう使うのをやめようかな。って思ってしまいます。初心者が躓くようなところで、教育的なエラーメッセージが出るようになればいいのになあ、って思います。

ごもっともなご意見でありますが、言うほど簡単ではないです。
一番の問題として、プロデル初心者の操作を、私が付き添って見ているわけではないので、
どのようなプログラムを書いて、どのようなエラーに遭遇しているかを知るすべがありません。
多くの場合、諦めてしまっているか、自己解決されているだと思いますが
フィードバックをもらうか、かなりの想像力を働かせないと、
なかなか、気の利いたエラーメッセージに直すことが難しいです。

まずはエラーメッセージに関しても優先して改善が必要そうだということは認識しましたので
検討します。
ぜひエラーメッセージに関しても、何が意味不明かなど具体的なフィードバックをお願いします。

Re^2: ウィンドウに配置した入力項目の保存と再現

投稿者:ゆうと <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

「プロデる」は、データを書き換えると
任意のコードを実行できてしまうというセキュリティ上の問題があるので公開するようなソフトウェアではお勧めできません。
(個人で使う分にはよいと思いますが)

Re^3: HTML文書内からタグを削除するには?

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/02/24(Sat) 00:03:50 No.2941

こんにちは

> プロデルでもTTSneoと同様な正規表現置換ができることを強く望みます。
プロデルはTTSneoよりも便利な正規表現操作ができていると認識していますので、何か誤解されていると思います。

アークさんの解説の通り、文字列定数内の[ ](全角半角区別なし)は、式展開を表す表記ですので、正規表現との相性は良くありません。(これはプロデルの文化ということでご理解ください)

希望している同様な正規表現置換というのが[ ]の表記の件を指しているのだとすれば、
正規表現を「「 」」(二重に鍵括弧)で指定することで、式展開を無効化できます。

https://produ.irelang.jp/docs/syntax/string.html

---------------
文章は「<head>header</head><body>content</body>」
文章は、正規表現で文章を「「<[^>]+>」」から「」へ置換したもの
文章を報告する
---------------
※歴史的な経緯で、を・から・への対応が文字列種類の置換と異なります。すみません。

> より細かい調整が必要な場合は「sed」を使います。
私が正規表現が好きではない事が関係していると思いますが
正規表現で求められる機能は一通り持っていると認識しています。
具体的にはsedでどのような操作をしているのでしょうか。

意外と、私としては大した問題ではないと思っていることで躓くのですね...
参考にしたいと思います。

Re: ウィンドウに配置した入力項目のクリア

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/02/23(Fri) 23:44:15 No.2940

こんにちは

> タブ1の中の入力してある項目の内容だけ、あるいはタブ2だけをクリアしたい時には、どうすればよいのでしょうか?
> と冗長なプログラムを記述するしかないのでしょうか?

いろいろな考えがあると思います。
部品の個数がさほど多くない場合は、冗長に書いてしまってよいように思います。

プロデルはオブジェクト指向ですので、次のように書いて、
タブページ内の部品を列挙してそれらを繰り返しクリアすることもできます。
-------------
タブページ1の子部品一覧を部品へそれぞれ繰り返す
  部品の内容は「」
そして
-------------

そもそも、プログラムが長くなるほどたくさんのテキスト部品を貼り付ける必要があるのでしょうか。例えば、リストボックスやリストビューといった部品もありますので、たくさんの部品を貼り付けずに済む方法を考えるべきかもしれません。

> 「タブ2を入力項目クリアする」
> などという記述で、タブ2の入力可能項目だけが、入力以前の状態にできたらいいなになあと思います。
> 同様に、「タブ2を保存する」とか「タブ2を復元する」、「ウィンドウ1を保存する」とか「ウィンドウ1を復元する」という記述で、入力可能項目だけが保存されたり、復元できたら「すばらしい!!!!」と思います。

お気持ちはわかりますが、機能を付けたとしても、除外したい部品を指定したい、この場合は文字色やフォント、部品サイズも保存したい、といった色々なオプションが欲しくなってくるものです。
このような要望に対応していると、キリがないので、標準では付けづらい(というよりもご自身で手順を作って工夫して欲しい)というのが基本的な考えです。

ただコメントにつきましては今後の参考にしたいと思います。

-------------
メイン画面を表示する
待機する
メイン画面とは
  ウィンドウを継承する
  はじめの手順
    初期化する
    ーー貼り付けた部品に対する操作をここに書きます
  終わり
  初期化する手順
    ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
    初期化開始する
    この実質大きさを{428,394}に変える
    この内容を「メイン画面」に変える
    この文字色を「標準の文字」に変える
    ボタン1というボタンを作る
      その位置と大きさを{151,321,112,34}に変える
      その内容を「ボタン1」に変える
      その移動順を1に変える
      その文字色を「標準の文字」に変える
    タブフレーム1というタブフレームを作る
      その位置と大きさを{53,29,300,266}に変える
      その見出しサイズを{92,24}に変える
      その移動順を2に変える
      その文字色を「標準の文字」に変える
      タブページ1というタブページをタブフレーム1へ作る
        その位置と大きさを{4,28,292,234}に変える
        その内容を「タブページ1」に変える
        その文字色を「標準の文字」に変える
        その背景色を「透明」に変える
        その余白を{3}に変える
        テキスト3というテキストをタブページ1へ作る
          その位置と大きさを{44,142,150,25}に変える
          その移動順を2に変える
        テキスト2というテキストをタブページ1へ作る
          その位置と大きさを{44,88,150,25}に変える
          その移動順を1に変える
        テキスト1というテキストをタブページ1へ作る
          その位置と大きさを{44,35,150,25}に変える
          その移動順を3に変える
      タブページ2というタブページをタブフレーム1へ作る
        その位置と大きさを{4,28,292,234}に変える
        その内容を「タブページ2」に変える
        その移動順を1に変える
        その文字色を「標準の文字」に変える
        その背景色を「透明」に変える
        その余白を{3}に変える
    初期化終了する
    この設計スケール比率を{144,144}に変える
    タブフレーム1の一覧を{「タブページ1」,「タブページ2」}に変える
  終わり
  ボタン1がクリックされた時の手順
    タブページ1の子部品一覧を部品へそれぞれ繰り返す
      部品の内容は「」
    そして
  終わり
終わり

Re: ここから先が分かりません

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/02/23(Fri) 23:12:13 No.2939

こんにちは
「AddFontResource」関数はちゃんと動いているようです。

> それを選択したとたんにエラーになってしまいます。
TrueTypeとしてインストールされていない旨のエラーということでしょうか。
(単に「エラーとなる」「うまくいかない」ではなくメッセージや状況を具体的に書いていただけると、状況が絞り込めるのでありがたいです)

次のアドレスの説明を見ると、AddFontResourceは、一時的なインストールのみでエクスプローラで選べるインストールとは動作が異なるようです。
2つ目のリンクの中盤にあるように、フォントをfontフォルダにコピーして、レジストリを直接登録し再起動する方法の方がベストのように思います。

https://learn.microsoft.com/ja-jp/windows/win32/api/wingdi/nf-wingdi-addfontresourcea
https://www.web-dev-qa-db-ja.com/ja/c%23/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%A7%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%EF%BC%88c%EF%BC%83%EF%BC%89/1045179572/

基本的には、以前お示ししたように、インストールせずにフォルトを用いる方法をお勧めします。
いずれにしても、プロデルには直接関連がなく、この件を確かめている余裕がありませんので
ご自身で試行錯誤してお試しください。

ウィンドウに配置した入力項目のクリア

投稿者:KNIGHT 投稿日:2024/02/23(Fri) 21:41:31 No.2938

御世話になります。

ウィンドウ内に配置した項目で、チェックボックスが20項目、テキストが20項目、テキスト領域が5カ所、オプションの2項目が5カ所、選択リストが2カ所・・、ある場合、入力してある項目の内容をすべてクリアしたい時には、ウィンドウ自体を初期化してしまえばよいのでしょうが、タブフレームを設定していて、タブ1の中の入力してある項目の内容だけ、あるいはタブ2だけをクリアしたい時には、どうすればよいのでしょうか?

力ずくで、
チェックボックス11は「」
チェックボックス12は「」
・・・
ーーーーー
テキスト11は「」
テキスト12は「」
・・・
ーーーーー
テキスト領域6は「」
・・・
ーーーーー
オプション5は・・・

と冗長なプログラムを記述するしかないのでしょうか?
「タブ2を入力項目クリアする」
などという記述で、タブ2の入力可能項目だけが、入力以前の状態にできたらいいなになあと思います。
同様に、「タブ2を保存する」とか「タブ2を復元する」、「ウィンドウ1を保存する」とか「ウィンドウ1を復元する」という記述で、入力可能項目だけが保存されたり、復元できたら「すばらしい!!!!」と思います。

自然言語的には、「すばらしい!!!!」というまでもなく、「当たり前」だと思うのは、私が期待しすぎなのでしょうか?

プロデルに期待してTTSneoから離脱したいシロートプログラマーです。

Re^2: HTML文書内からタグを削除するには?

投稿者:KNIGHT 投稿日:2024/02/23(Fri) 20:33:45 No.2937

アークさん、お返事ありがとうございます。

> プロデルでの「[」や「]」は特別な意味を持つ事を思い出してください。
そうなのですね。ただ、TTSneo の表現からすれば、「正規表現で」と宣言した時点で、「プロデルでの「[」や「]」は特別な意味」からは、ここでは逸脱していただきたいと思ってしまいます。
> また、一般的な正規表現での「[」や「]」も別の意味が有ります。
それを優先していただきたいのです。世の中は「正規表現>>プロデル」ですから。

> 文章は「<head>header</head><body>content</body>」
> 正規表現によって文章から「<(.*)>(.*)<\/\1>」を子要素ごとに取り出して、テキスト一覧とする
> テキスト一覧を要素にそれぞれ繰り返す
>   要素(2)を報告する
> 繰り返し終わり

> これで目的は達成できるでしょうか。
確かに、この文章「<head>header</head><body>content</body>」ならばそれで事足りるでしょうが、TTSneoよりは、かなり難しいコーディングが必要ですね。
個人的にやりたいことは、以下のような文章でHTMLタグを削除することです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
・<span class="marker_blue">プロポフォール注入を併用した場合に、成人患者を後ろ向きに同定した。</span>治療重み付けの逆確率・・・・。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
プロデルでもTTSneoと同様な正規表現置換ができることを強く望みます。

Re: HTML文書内からタグを削除するには?

投稿者:アーク 投稿日:2024/02/23(Fri) 19:30:17 No.2936

こんばんは。アークです。

プロデルでの「[」や「]」は特別な意味を持つ事を思い出してください。
また、一般的な正規表現での「[」や「]」も別の意味が有ります。

文章は「<head>header</head><body>content</body>」
正規表現によって文章から「<(.*)>(.*)<\/\1>」を子要素ごとに取り出して、テキスト一覧とする
テキスト一覧を要素にそれぞれ繰り返す
  要素(2)を報告する
繰り返し終わり

これで目的は達成できるでしょうか。
私はプロデルでの正規表現は得意では無いので、
より細かい調整が必要な場合は「sed」を使います。

参考までに。

HTML文書内からタグを削除するには?

投稿者:KNIGHT 投稿日:2024/02/23(Fri) 10:38:50 No.2935

御世話になります。
HTML文書内からタグを削除するには、TTSneoでは

文章=「<head>header</head><body>content</body>」
文章=パターン置き換え(文章、「<[^>]+>」、「」)
文章を報告する

で正規表現置換が可能でしたが、プロデルではどうすればよいのでしょうか?
通常であれば、

文章は「<head>header</head><body>content</body>」
文章は、正規表現で文章から「<[^>]+>」を「」へ置換したもの
文章を報告する

で行けそうなのに、プロデルでは、「ここに演算子を書くことができません。」とエラーメッセージが出ます。そもそも
[^A]
という表現さえも許容されません。
どうすればよいのかご教授いただけませんでしょうか?
よろしくお願いいたします。

修正しました

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/02/22(Thu) 19:13:45 No.2931

こんにちは

ご返答遅くなりましたが、リンク切れの件修正いたしました。

ご指摘ありがとうございます。

▲ページの先頭へ

- WebForum -