コンパイル済みで「起動する」が使えない

投稿者:にぽ 投稿日:2019/11/21(Thu) 22:32:12 No.1840

こんにちは。度々失礼致します。

コンパイル済みコンソールアプリで「起動する」が動きません。

----
「notepad.exe」を起動する。
----

エラー
----
ハンドルされていない例外: System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。
場所 起動(Object , Object[] )
場所 Produire.TypeModel.外部手順定義.Call(Object baseObject, Object[] args)
場所 Produire.ConstructScopeIL.Invoke(Object targetObject, String verbName, String[] names, String[] particles, Object[] arguments, Boolean isPartial, Object lastValue)
場所 test_debug.GlobalClass.RunCode()
場所 test_debug.MainClass.Main()
----

※デザイナ上では動きますので,notepad.exeがないということはありません。

デコンパイルした内容
----
public void RunCode()
{
  //IL_0029: Unknown result type (might be due to invalid IL or missing references)
  object[] array = new object[1]
  {
    "notepad.exe"
  };
  object obj = _scope.Invoke((object)null, "起動", (string[])null, ParticleFields.を, array);
  _ = (プロセス)obj;
}
----

よろしくお願いいたします。

Re: コンパイル済みで「起動する」が使えない

投稿者:にぽ 投稿日:2019/11/22(Fri) 21:24:03 No.1841

こんにちは。いつもすみません。

同じ系統のエラーだと思われますので,こちらに書かせて頂きます。
いずれも,デザイナー上では動作しますが,コンパイル済みコンソールアプリでエラーが出ます。

○匿名関数を用いたソート
コード
----
人口は,{日本=127000000,米国=327000000,中国=1386000000}。
国名は,人口の見出し。
国名を『
  それを{左,右}とみなす。
  もし人口(左)>人口(右)なら,-1を返す。
  他でもし人口(左)<人口(右)なら,1を返す。
  そうでなければ0を返す。
』で並び替える。
国名を表示。
----

エラー
----
ハンドルされていない例外: System.InvalidOperationException: 配列にある 2 つの要素を比較できませんでした。 ---> System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。
場所 Produire.RdrCustomComparer`1.Compare(T x, T y)
場所 System.Collections.Generic.ArraySortHelper`1.SwapIfGreater(T[] keys, IComparer`1 comparer, Int32 a, Int32 b)
場所 System.Collections.Generic.ArraySortHelper`1.DepthLimitedQuickSort(T[] keys, Int32 left, Int32 right, IComparer`1 comparer, Int32 depthLimit)
場所 System.Collections.Generic.ArraySortHelper`1.Sort(T[] keys, Int32 index, Int32 length, IComparer`1 comparer)
--- 内部例外スタック トレースの終わり ---
場所 System.Collections.Generic.ArraySortHelper`1.Sort(T[] keys, Int32 index, Int32 length, IComparer`1 comparer)
場所 System.Array.Sort[T](T[] array, Int32 index, Int32 length, IComparer`1 comparer)
場所 System.Collections.Generic.List`1.Sort(Int32 index, Int32 count, IComparer`1 comparer)
場所 辞書ソート.GlobalClass.RunCode()
場所 辞書ソート.MainClass.Main()
----

○スレッドで匿名関数の実行
コード
----
あというスレッドを作る。
あで『「い」を表示。』を実行する。
----

エラー
----
ハンドルされていない例外: System.ArgumentNullException: 値を Null にすることはできません。
パラメーター名:key
場所 System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
場所 System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue& value)
場所 Produire.TypeModel.PluginManager.ConvertType(Type type, Boolean isFixed)
場所 Produire.4.GetParameterType(IParticleComplement complement)
場所 Produire.TypeModel.実補語定義.Match(IProcedurePrototype prototype, PType receiverType, Boolean dontSayLazy, Int32& rank)
場所 Produire.TypeModel.手順定義.2(IProcedurePrototype 0, PType 1, Boolean 2, Int32& 3)
場所 Produire.TypeModel.OverloadCollection.7(IProcedurePrototype 0, 手順定義& 1)
場所 Produire.ConstructScopeIL.Invoke(Object targetObject, String verbName, String[] names, String[] particles, Object[] arguments, Boolean isPartial, Object lastValue)
場所 test_debug.GlobalClass.RunCode()
場所 test_debug.MainClass.Main()
----

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


よろしくお願いいたします。

一部対応しました

投稿者:ゆうと 投稿日:2019/12/01(Sun) 22:16:04 No.1863

こんにちは、ゆうとです。
匿名手順については、現時点で完全にコンパイルすることができない構文ですので
今回の改修タイミングで順次対応していきたいと思います。

1.6.983では匿名手順そのものの出力には対応致しました。
そのため「○スレッドで匿名関数の実行」については、1.6.983で対応致しました。

ただクロージャにはまだ対応していませんので並び替えは、動作しません。
後日対応できましたらお知らせします。

「起動する」が使えない件は修正しました

投稿者:ゆうと 投稿日:2019/11/25(Mon) 01:42:24 No.1844

にぽさん、こんにちは ゆうとです。
お世話になっております。

コンパイル済みで「起動」手順が実行できない件については
1.6.981で修正しました。
定数値を省略できる手順でこの現象が発生していました。

ご指摘ありがとうございます。ご確認下さい。
この際ですので、他にも何かございましたら集中的に直していきたいと思います。
よろしくお願いします。

固定長配列の並び替え

投稿者:にぽ 投稿日:2019/11/25(Mon) 12:59:34 No.1845

こんにちは。いつもお世話になっております。

固定長配列の並び替えが,コンパイル済みでうまく動きません。
----
【あ:整数の配列(5)】は,固定長配列(5)を作ったもの。
あは,{3,2,6,4,1}。
あを大きい順に並び替える。
あを表示。
----
「{3,2,6,4,1}」が表示されます。

通常の配列では問題ありません。

よろしくお願いいたします。

1.6.982で発生中

投稿者:にぽ 投稿日:2019/11/27(Wed) 21:37:39 No.1855

こんにちは,バージョンの記載漏れがありましたので追記致します。
お手数をおかけいたしました。

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

保留中です

投稿者:ゆうと 投稿日:2019/12/01(Sun) 22:17:49 No.1864

固定長配列の並び替えについては、
配列に関する設計を根本的に見直す必要がでてきましたので
一時保留させてください。
対応しましたら、お知らせします。

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

辞書の見出しをそれぞれ繰り返せない

投稿者:にぽ 投稿日:2019/11/25(Mon) 13:14:52 No.1846

こんにちは。お世話になります。

以下のプログラムが,コンパイル済みコンソールアプリでエラーです。
----
あは,{山=1,川=2,里=3}。
あの見出しを【キー】へそれぞれ繰り返す
  キーを表示。
繰り返し終わり
----

----
ハンドルされていない例外: System.InvalidCastException: 型 'Produire.4' のオブジェクトを型 'Produire.IScope' にキャストできません。
場所 表示(Object , Object[] )
場所 Produire.TypeModel.外部手順定義.Call(Object baseObject, Object[] args)
場所 Produire.ConstructScopeIL.Invoke(Object targetObject, String verbName, String[] names, String[] particles, Object[] arguments, Boolean isPartial, Object lastValue)
場所 test_debug.GlobalClass.RunCode()
場所 test_debug.MainClass.Main()
----

よろしくお願いいたします。

1.6.982で再現せず

投稿者:にぽ 投稿日:2019/11/27(Wed) 21:33:12 No.1852

こんにちは。
このエラーは,バージョン1.6.982で発生しないことを確認しました。

よろしくお願いいたします。

修正しました

投稿者:ゆうと 投稿日:2019/12/01(Sun) 22:03:05 No.1860

こんにちは ゆうとです。
こちらについては、前回修正箇所が影響しておりました。
最新版1.6.983で修正致しました。

種類の「取得する手順」が動かない

投稿者:にぽ 投稿日:2019/11/25(Mon) 13:20:18 No.1847

こんにちは,大量投稿失礼致します。

種類の取得する手順がコンパイルすると動きません。

----
あといういを作る。
あのうは,「あああ」
あのうを表示。

いとは
  −中身
  はじめの手順
  
  終わり
  うを取得する手順
    中身を返す。
  終わり
  うを設定する手順
    中身は,設定値。
  終わり
終わり
----

エラー
----
ハンドルされていない例外: System.InvalidCastException: 型 'System.String' のオブジェクトを型 'Produire.IProduireValue' にキャストできません。
場所 test_debug.GlobalClass.RunCode()
場所 test_debug.MainClass.Main()
----

よろしくお願いいたします。

1.6.982で解決

投稿者:にぽ 投稿日:2019/11/27(Wed) 21:34:32 No.1853

こんにちは。

バージョン1.6.982でこのエラーが発生しないことを確認しました。

ありがとうございます。

修正しました

投稿者:ゆうと 投稿日:2019/12/01(Sun) 22:10:28 No.1862

こんにちは ゆうとです。
お返事遅くなりました。

こちらについても、型推論ができない変数で正しくコンパイルできない不具合がありました。
最新版プロデル1.6.983で修正しましたのでご確認下さい。

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

2次元配列が辞書にキャストされる

投稿者:にぽ 投稿日:2019/11/26(Tue) 19:56:42 No.1849

こんにちは。いつもお世話になっております。

コンパイル済みコンソールアプリにおきまして,以前は起きていなかったエラーが発生したのでご報告致します。

プログラム
----
【あ:配列】は,{}。
あ(1)は,{1,2,3}。
あ(2)は,{4,5,6}。
あ(1)(2)は,0。
----

エラー
----
ハンドルされていない例外: System.InvalidCastException: 型 'Produire.CoreLibrary.配列' のオブジェクトを型 'Produire.CoreLibrary.辞書' にキャストできません。
場所 Produire.PConverter.CastTo[T](Object value)
場所 test2.GlobalClass.RunCode()
場所 test2.MainClass.Main()
----

デコンパイル
----
配列 val = あ = (配列)(object)new 配列();
  object[] array = new object[0];
  あ = (配列)(object)new 配列(array);
  あ.set_Item(1, PConverter.CreateValue((object)new 配列(new object[3]
  {
    1,
    2,
    3
  })));
  あ.set_Item(2, PConverter.CreateValue((object)new 配列(new object[3]
  {
    4,
    5,
    6
  })));
  MainClass.binder.SetValue((object)PConverter.CastTo<辞書>((object)((配列ベ\u30fcス)あ).get_Item(1)), PConverter.CastTo<string>((object)2), (object)PConverter.CreateValue((object)0)); //←ここで辞書にキャストされてしまっているように思われます
----

よろしくお願いいたします。

1.6.982で発生中

投稿者:にぽ 投稿日:2019/11/27(Wed) 21:35:52 No.1854

こんにちは。
バージョンの記載漏れがあり,ご迷惑をおかけ致しました。

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

よろしくお願いいたします。

修正しました

投稿者:ゆうと 投稿日:2019/12/01(Sun) 22:04:04 No.1861

にぽさん、こんにちは、お世話になっております。

こちらの不具合も前回修正箇所が影響しておりました。
最新版1.6.983で修正致しました。
ご指摘ありがとうございます。

バージョンの記載をお願いします

投稿者:ゆうと 投稿日:2019/11/27(Wed) 01:00:07 No.1850

にぽさん、お世話になっております。
ゆうとです。

更新を頻繁に行っておりますので
最新版で明らかな場合でも、お手数ですがバージョンの記載をお願い致します。

Re: バージョンの記載をお願いします

投稿者:にぽ 投稿日:2019/11/27(Wed) 21:40:32 No.1856

こんにちは,いつもありがとうございます。

バージョンの記載漏れでお手数をおかけして申し訳ありません。
各スレッドに追記致しました。

よろしくお願いいたします。

▲ページの先頭へ

- WebForum -