投稿者:ゆうと <yutopia utopiat.net> 投稿日:2024/02/14(Wed) 01:37:09 No.2921
お返事ありがとうございます。
> 「TTSneoの書き方の方がずいぶん分かりやすかったな」と思うばかりです。
プロデルはTTSneoよりも時間をかけていますので、こういったご感想は率直に残念です。
ただ、プロデルは扱いづらいという声も軽く聞こえてきており、何らかの改善が必要だと認識しています。
ユーザが感じている使いにくさは、開発者からはなかなか理解できない点でもあります。
ぜひフィードバックを頂ければと思います。
> また、別件ですが、「二次配列」の「探す」でもいきづまってまして、プロデルの V1.710 あたりまでは、二次配列でも「探す」が機能していたようですが、それ以降に、二次配列では「探す」機能がうまく機能せず、どうしたものかと思い悩んでいます。
ご面倒だと思いますが、まずは掲示板でご質問・ご報告ください。
意外かもしれませんが、基本的に告知なく仕様を変えている認識はなく、1.7以前で作ったプログラムも2.0で動く認識です。
ただ特に1.8で大幅な改造を加えたことで、把握していない所で意図せず仕様が変わってしまっているようです。
テストは実施していますが、ユーザが作成したプログラムは把握できませんので、
何か変化があった場合は、ぜひフィードバックをお願いします。
> 配列の基本的な概念自体も、あくまで「一次配列だけを扱っています」とか、説明があればよいのかなと思います。
単に一次配列だけであるという事でもありませんが、
一次配列の要素に一次配列を入れれば二次元配列になる(ジャグ配列)というのがプロデルでの配列です。この点は、TTSneoとは異なります。
配列に関しては、最近、大幅内部仕様の改良を実施した所ですので、マニュアルが追い付いていません。
相変わらず、ワンオペで開発していますので、追って加筆したいと思います。
少々お待ちください。
投稿者:アーク 投稿日:2024/02/13(Tue) 21:13:26 No.2920
アークです。
失礼しました。
配列ではなく日時形式の方です。
ご確認ください。
投稿者:KNIGHT 投稿日:2024/02/13(Tue) 20:12:00 No.2919
ゆうとさま、じきじきのご回答をありがとうございます。
ただ、言われていることが私の理解を超えていて・・・
〜〜〜
データというデータ表を作る
データに{「果物名」,「値段」}という列を加える
データの2列目を取得してそのデータ型を整数に変える
果物リスト={{「みかん」,30},{「りんご」,100},{「なし」,120},{「メロン」,800},{「かき」,80},{「ぶどう」,300}}
データの一覧を果物リストに変える
データを「値段」で並び替えて並替後データとする
果物値段表は、並替後データの一覧
〜〜〜
私の頭では、「データの一覧を果物リストに変える」という時点で、「データの一覧」は、二次配列だと思い込みます。したがって、(「すべて」は抜きで、)「果物値段表は、並替後データの一覧」と記述したいと思ってしまうのです。
そうすると「エラー」なのです。なんで????
「TTSneoの書き方の方がずいぶん分かりやすかったな」と思うばかりです。
また、別件ですが、「二次配列」の「探す」でもいきづまってまして、プロデルの V1.710 あたりまでは、二次配列でも「探す」が機能していたようですが、それ以降に、二次配列では「探す」機能がうまく機能せず、どうしたものかと思い悩んでいます。
原則的に、「二次配列」は「配列」と考えてはいけないのでしょうか?
その辺り、明確な線引きなしに、仕様が変更されてしまっているようで、昔にちゃんと思い通りに動いていたプログラムが、いろいろな新しいバージョンで試してみますが、どれもこれも動かなくなってしまって困っています。
配列の基本的な概念自体も、あくまで「一次配列だけを扱っています」とか、説明があればよいのかなと思います。
よろしくお願いいたします。
投稿者:KNIGHT 投稿日:2024/02/13(Tue) 19:50:34 No.2918
御世話になります。
「〜の整数値」の件ですが・・・
> 普通に配列のプロパティ項目に書かれていますよ。
具体的にプロデルマニュアルのURLなど教えていただくとありがたいです。
自分でプロデルマニュアルで検索しても見えてきません。
よろしくお願いいたします。
投稿者:アーク 投稿日:2024/02/13(Tue) 14:12:42 No.2917
アークです。
解決されたようで良かったです。
〉マニュアルのどこら辺に書かれていますのでしょうか?
普通に配列のプロパティ項目に書かれていますよ。
尚、「要素のファイルの更新日の整数値」とは、
エクセルで言う「日付のシリアル値」の事です。
「1年1月1日0:0:00」が起算値ですので、
そのシリアル値である「631139040000000000」を減算していますが、
人から見た読み易さだけの問題なので省略しても結果には影響しません。
一覧を要素にそれぞれ繰り返す
「[要素のファイルの更新日の整数値]:[要素のファイル名だけ]:[要素のファイルの更新日]」をファイル一覧へ追加する
繰り返し終わり
投稿者:ゆうと <yutopia utopiat.net> 投稿日:2024/02/13(Tue) 14:12:28 No.2916
> 最後から2行目の「果物値段表は、並替後データすべての一覧」という文章の中の「すべて」が必要なのはどうしてか疑問です。
まず「並替後データ」には、2次元配列ではなく、データ行の配列で格納されています。
(マニュアルにデータ表の並べ替える手順に関する説明を追記しました)
『果物値段表は、並替後データすべての一覧』
の部分は、すべてを使わない通常の書き方では、次のように書きます。
----------------
果物値段表は、{}
並替後データをレコードへそれぞれ繰り返す
果物値段表へレコードの一覧を追加する
繰り返し終わり
----------------
「すべて」後置詞を使った書き方は、この繰り返しを簡潔に書くための文法です。
必ず「すべて」を使う必要なく、繰り返し文で書いても構いません。
データ表の並べ替えについては、扱いづらさをご質問を通じて今回認識しましたので
今後のアップデートで改善したいと思います。
投稿者:KNIGHT 投稿日:2024/02/13(Tue) 11:57:30 No.2915
陸さん、アークさん、ご親切にありがとうございます。
お二人とも、プロデルを使いこなされていますね。
アークさんの「保存番号は、要素のファイルの更新日の整数値」
「〜の整数値」なんていう記述ができるとは驚きました。
マニュアルのどこら辺に書かれていますのでしょうか?「並べ替え」と「並び替え」のバージョンによる差のことといい、アークさんはプロデルマニュアルよりもお詳しいですね。
日本語で書いてあるのに、解釈が追い付かない・・・・、なんと哀れな私。
頑張って、解釈を試みてみます。
どうも、お付き合いをありがとうございました。
今後ともよろしくお願いいたします。
投稿者:アーク 投稿日:2024/02/13(Tue) 10:58:41 No.2914
アークです。
〉何も変更されていないと思うのですが?
微妙な変更をしています。
「並べ替える」から「並び替える」へ
〉表部品1の2列目を昇順に並べ替える←サンプルに記載されていますが エラーが出て実行できません。
…という事でしたので…。
プロデルはバージョンによって「び」でないとエラーになる事が有ります。
その逆も有るようですが…。
〉プロデル上でやるとすれば、アークさんならどうプログラミングされますか?
私ならという事なので一般的な方法とは言えませんが…。
ファイル一覧は、{}
一覧は、フルパスで「フォルダ名\*.pdf」のファイルの一覧
一覧を要素にそれぞれ繰り返す
保存番号は、要素のファイルの更新日の整数値
「[保存番号-631139040000000000]:[要素のファイル名だけ]:[要素のファイルの更新日]」をファイル一覧へ追加する
繰り返し終わり
ファイル一覧を名前順に並べ替る
ファイル一覧を報告する
配列だけで遣るならこれでしょうか。
処理結果の形態としてどの様なものが必要なのかで変わってくると思いますが、
ファイル名と保存日時だけの配列にしたいなら下記のようにすれば得られます。
ソート済一覧は、{}
ファイル一覧を要素にそれぞれ繰り返す
配列は、要素を「:」で区切ったもの
{配列(2),配列(3)}をソート済一覧へ追加する
繰り返し終わり
ソート済一覧を報告する
参考までに…。
投稿者:陸 投稿日:2024/02/13(Tue) 08:39:44 No.2913
こんにちは。
横からすみません。
更新日時でのソートについて、並び替えの手順が複雑ですが、こんな感じでどうでしょうか。
簡単な流れとしては、ファイル一覧を取得したあと、カスタムソートという並び替えの方法を手順で指定する方法を利用してソートしています。
特に、多次元配列の場合は、現状はカスタムソートを利用しないとソートできない気がします。
※下記のサンプルソースを利用する場合は、1行目のパス部分を実際のファイルが存在するフォルダのパスに書き換えてから実行してみてください。
1.配列に更新日時が必要ない場合
並び替えた結果は、1次元の配列になります。
----- サンプルソース -----
パスは、「D:\書類」
ファイル一覧は、フルパスで「[パス]\*.pdf」のファイルの一覧
ファイル一覧を『
それを{左,右}とみなす
日付差は、(左のファイルの更新日)と(右のファイルの更新日)の日付差
もし日付差の合計秒数<0なら
1を返す。
他でもし日付差の合計秒数>0なら
-1を返す。
そうでなければ
0を返す
もし終わり
』で並び替える
結果は、ファイル一覧を[改行]で繋げたもの
結果を表示する
----------
2.配列に更新日時が必要な場合
並び替えた結果は、パスと更新日時を含む配列になります。
----- サンプルソース -----
パスは、「D:\書類」
ファイル一覧は、{}
(フルパスで「[パス]\*.pdf」のファイルの一覧)を要素にそれぞれ繰り返す
{要素, 要素のファイルの更新日}をファイル一覧へ追加する
繰り返し終わり
ファイル一覧を『
それを{左,右}とみなす
日付差は、(左(2))と(右(2))の日付差
もし日付差の合計秒数<0なら
1を返す。
他でもし日付差の合計秒数>0なら
-1を返す。
そうでなければ
0を返す
もし終わり
』で並び替える
結果は、ファイル一覧を[改行]で繋げたもの
結果を表示する
----------
以上、参考になれば幸いです。
投稿者:KNIGHT 投稿日:2024/02/12(Mon) 19:50:37 No.2912
御世話になります。
> 「はじめの手順」の最後の行を下記のように変更する事でエラーが解消します。
> 「表部品1の2列目を昇順に並び替える」
何も変更されていないと思うのですが?
◆動作環境情報◆
プロデル 2.0.1222
Windows 10 Pro 32ビット
メモリ:3.39 GB
新しいバージョンでプログラムを実行させるとエラーは出ませんが、並び替えがされていません。なるほど、数値として扱われていないからなのですね。
以下のようにすれば、並べ替えができました。
〜〜〜
メイン画面を表示する
待機する
メイン画面とは
ウィンドウを継承する
はじめの手順
初期化する
ーー貼り付けた部品に対する操作をここに書きます
データというデータ表を作る
データに{「名前」,「値段」}という列を加える
データの2列目を取得してそのデータ型を整数に変える
データへ{名前=「みかん」,値段=30}を加える
データへ{名前=「りんご」,値段=50}を加える
データへ{名前=「なし」,値段=100}を加える
データへ{名前=「めろん」,値段=1000}を加える
データへ{名前=「ぶどう」,値段=120}を加える
表部品1のデータ表をデータに変える
表部品1の2列目を昇順に並べ替える
終わり
初期化する手順
ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
この内容を「メイン画面」に変える
初期化開始する
表部品1という表部品を作る
表部品1を初期化開始する
その位置と大きさを{17,42,256,114}に変える
その列見出し高さを18に変える
表部品1を初期化終了する
初期化終了する
終わり
終わり
〜〜〜
ありがとうございました。
しかし、表部品まで使わなくてもソートすることはできないものでしょうか?
実際にやりたいのは、「あるフォルダに保存されているPDFファイルを、更新日の新しい順に並び変える」ことです。
プロデル上でやるとすれば、アークさんならどうプログラミングされますか?
よろしくお願いいたします。
- WebForum -