サンプル「ペイント.rdr」でエラー

投稿者:田中充 投稿日:2018/10/13(Sat) 10:28:42 No.1660

田中です。お世話になっております。

サンプル「ペイント.rdr」を実行するとエラーが出ます。
添付ファイルを参照ください。

ソース自体に間違いは無いと思うのですが...

>図形描画:線をピクチャー1に始点座標から座標まで線色色で描く


◆動作環境情報◆
プロデル 1.6.928
Windows 10(64)
メモリ:7.84 GB

Re: 修正しました

投稿者:通りすがり 投稿日:2018/10/10(Wed) 21:39:01 No.1659

もともとのプログラムで確認しようとしたのですが、別のところでエラーとなり、まだ未確認です。
もしかすると、今回の修正の影響かもしれません。が、当方の潜在バグという可能性も結構あります。
簡単なケースで試した限りでは再現しないため、調査中です。
(PNGとGIFを読み込み、APNG/AnimationGIFを出力するプログラムなので全体を載せるには、でかいです。また、実行にはPluginが2つ必要になります(プロデルではうまく動作しなかった、CRC32計算とGIF→PNG変換をC#でPlugin化。後者は今は大丈夫かも。))

参考までに、以下のような現象です。

・ある種類に、「[自分]から読み取りする手順」と、「[自分]から符号なし短整数として、読み取る手順」がある(ほぼ、バイナリファイルや、バイナリデータと同じ手順群を持っています)
・この種類は、実装無しの種類を継承している(上記手順もそこに定義が含まれる)
・インスタンスから、上記のどちらを呼び出そうとしても、前者が呼び出されてしまう。
・このインスタンスは、うまく呼びせていない処理の引数として呼び出し元から受け取っているが、その際の仮引数の型制約は、実装無しの種類となっている(インスタンスそのもの種類ではない)
・種類の定義のあるファイルと、インスタンスを生成して利用しているファイルは別(プロジェクトを構成している)
・ただし、ここに記載した内容と同じ条件になるように、プロジェクトを生成して、試しても、再現しない(正しく、それぞれのメソッドが呼び出される)

という感じです。

Re: 修正しました

投稿者:通りすがり 投稿日:2018/10/10(Wed) 21:22:55 No.1658

対応ありがとうございます。
線が引かれることを確認できました。当初の予定についても、DrawRectにして、カラーの枠が描けることも確認できました。

また、OnPaintの件も、完全に置き換えることや、事前に何か描くことはできませんが、今回のように、後から描くことはできるため、それなりに使えそうと思います。(書き足したいというケースが1番多いと思ってます)
ネックは、Graphicsに対して直接メソッドを呼び出す点でしょうか(私にはそれでも十分です)

修正しました

投稿者:ゆうと 投稿日:2018/10/09(Tue) 02:38:39 No.1657

通りすがりさん、お世話になっています。

> ドットネット型から作成したインスタンスについて、「:」でインスタンスメソッドを呼び出せるのですが、オーバロードしている場合にうまく呼び出せていないようです。
> >g:DrawLine(青ペン,0,0,この幅,この高さ)

確認しましたところ、
オーバロードされたメソッドで呼び出すべきメソッドを決める処理に問題がありました。
実引数の型が、構文解析時に型推論で決まる場合には、正しく動作していましたが
今回のような動的に生成した値(インスタンス)の場合では、正しく決められない状態になっていました。
また、メソッドが定まらない場合にエラーが表示されていませんでしたので、こちらも合わせて直しました。

MethodInfoクラスのGetMethodメソッドもオーバロードが多数ありますので、今回の修正でこのアプローチもできるかと思います。

一方、メソッドのオーバライド(OnPaint)の件については、
プロデルの仕様上、プラグイン種類を継承した種類は、内部的にはプラグイン種類のラッパを継承して実現しているため、OnPaintメソッドをオーバライドする記述がプロデル上で表現できません。
(フルコンパイラでは実現できそうとは思っていますが、通常のランタイム版では仕様の大幅改訂が必要になります...)

ご参考までに

解決しました

投稿者:アーク <info_nds-labo あっとまーくexcite.co.jp> 投稿日:2018/10/08(Mon) 21:50:48 No.1656

ゆうとさん、アークです。

回答ありがとうございます。
お陰で解決しました。

〉Windowsでは仕様で管理者権限で起動しているアプリへドラッグ&ドロップできません
管理者権限…。原因はそれでした。

プロデルはランチャに登録して使っています。
そのランチャの設定で「標準ユーザとして実行」に設定してあるのですが、
プロデルのプロパティダイアログでは「管理者としてこのプログラムを実行する」に
チェックが入っていたのが原因でした。

原因も分かり解決したのでスッキリしました。
ありがとうございました。

管理者権限になっていませんか

投稿者:ゆうと 投稿日:2018/10/08(Mon) 18:58:25 No.1655

こんばんは ゆうとです。

添付したプログラムでもドラッグ&ドロップできない(禁止カーソル)でしょうか?

Windowsでは仕様で管理者権限で起動しているアプリへドラッグ&ドロップできません。
もし管理者権限になっている場合は通常の権限で起動して下さい。

またPCも再起動してみてください。ドラッグ&ドロップはエクスプローラに関連する機能ですので、再起動で改善することもあります。

設定は合っています

投稿者:アーク <info_nds-labo あっとまーくexcite.co.jp> 投稿日:2018/10/08(Mon) 18:04:41 No.1654

ゆうとさん、こんばんは。アークです。

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

勿論、「ドラッグドロップ」設定項目は○になっています。
また、旧バージョンなら問題無く動きます。

試しに同じプロデル 1.6.928のzipから解凍したものでは動きました。
この事を踏まえてzipから解凍したファイルをインストールフォルダに上書きしてみましたが、
この不可解な現象は改善しませんでした。
一度アンインストールした方が良さそうです。

取り敢えず不可思議な現象が起きている事をご報告しておきます。

修正しました

投稿者:ゆうと 投稿日:2018/10/08(Mon) 17:52:34 No.1653

こんにちは ゆうとです。
1.6.929で修正しました。

ただ特定の書き方をするとうまく動作しないようですので、今後手直しするかと思います。

「ドラッグドロップ」設定項目が○になってますか

投稿者:ゆうと 投稿日:2018/10/08(Mon) 16:58:32 No.1652

こんにちは ゆうとです。

確認しましたが正常に動作しているようです。
「ドラッグドロップ」設定項目が○になっていないと、ドラッグ&ドロップできませんので
その点を確認して下さい。

---------------
メイン画面を表示する
待機する

メイン画面とは
  ウィンドウを継承する

  はじめの手順
  初期化する
  終わり

  初期化する手順
  ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
  この設計スケール比率を{144,144}に変える
  この初期位置を「手動」に変える
  この内容を「ファイルのドラッグ&ドロップ」に変える
  初期化開始する
  ファイルリストというリストボックスを作る
    その位置と大きさを{0,0,278,238}に変える
    その項目高さを18に変える
    そのドラッグドロップを○に変える
    そのドッキング方向を「全体」に変える
  初期化終了する
終わり

  ファイルリストがドラッグドロップされた時の手順
    一覧は、この時のファイル一覧
    ファイルリストを更新開始する
    一覧をファイルリストへ追加する
    ファイルリストを更新終了する
  終わり
終わり
----------------

修正しました

投稿者:ゆうと 投稿日:2018/10/08(Mon) 15:32:00 No.1651

こんにちは ゆうとです。

挙動確認できました。
通常、派生種類で同一シグネチャの手順を定義した場合は、その手順を優先する仕様です。
ただ、サンプルのように、補語を持たない手順呼び出しがあった場合に、意図しない手順が実行されておりました。
1.6.929で修正しました。

手順解決の内部処理が複雑でごちゃごちゃになっていますので、もしかすると何か他の箇所に影響するかもしれません。少しずつ整理していきます。

▲ページの先頭へ

- WebForum -