資産管理電卓(LineCalc)公開 [資産管理電卓(LineCalc)]
資産管理電卓(LineCalc)の公開ページです。
Chromium Edge を使う場合Chromium Edge,WebView2 runtime のインストールが必要です。
.NET Framework 4.7.2 以降の環境が必要です。
.必要な場合は以下からダウンロードしてインストールしてください。
https://support.microsoft.com/ja-jp/help/4054530/microsoft-net-framework-4-7-2-offline-installer-for-windows
ダウンロードは GitHub と Vector からになります。
GitHub 資産管理電卓(LineCalc) v3.0.39.0 ダウンロード
Vector 資産管理電卓(LineCalc) v3.0.39.0 ダウンロード
マニュアルV1.189(v3.0.38.0以降対応版)
資産管理電卓(LineCalc)は自分で資産運用の管理、シミュレーションに使うために作ったものです(画面はプログラム例です)。
使用例などは blog でいくつか公開していますのでそちらを参照ください。
サンプルソースなども載っていますので実行できると思います。
ちょっとした計算やネットからの情報収集、バッチ処理、分析、文字列加工など気軽に電卓のように使えるようになっています。
WEBからの ,(カンマ)つき数値をそのまま扱えます(区切りとして使うにはスペース必用)。
株価等の記録をグローバル変数に記載しておけば自動で保存、次にまた読み込まれます。
ライセンス認証がありますが、ネット関係のライセンス問題がある部分は公開していませんがその他制限はありません。
LCS(LineCalcScript)という言語を実行することが基本となり、1+1等の計算も LCS の実行になります。
構文は簡単なので内部関数に慣れれば、簡単に複利計算やちょっとしたグラフを書いてみたり日々の資産を記録したりできます。
プログラムを作ったことのある人向けです。
LCSのサンプルコードスネークゲーム
(※)上記ソースをコピーして計算式エリアに貼り付けて実行してください。昔懐かしスネークゲームです。
キーボードの上下左右キーで向きが変わります。
ここをご覧ください
シューティングゲーム
ここからダウンロードしてコピペで貼り付けて下さい。
ここをご覧ください
21ゲーム
ここをご覧ください
神経衰弱
ここをご覧ください
LineCalcSetup.zip を解凍して setup.exe を起動してください。
もし、起動しようとして、
上記画面が出た場合、詳細情報を押して、
実行ボタンを押してください。
マニュアルはWindowsメニューから LineCalc の下かトップリンクから取得してください。
アンインストールはウインドウズのメニュー -> アプリから行ってください。
setup.exe をもう一度起動しても削除メニューが出てきます。
インストールの詳しい説明はインストール後マニュアルを参照してください。
質問は以下にお願いします。
Chromium Edge を使う場合Chromium Edge,WebView2 runtime のインストールが必要です。
.NET Framework 4.7.2 以降の環境が必要です。
.必要な場合は以下からダウンロードしてインストールしてください。
https://support.microsoft.com/ja-jp/help/4054530/microsoft-net-framework-4-7-2-offline-installer-for-windows
ダウンロードは GitHub と Vector からになります。
GitHub 資産管理電卓(LineCalc) v3.0.39.0 ダウンロード
Vector 資産管理電卓(LineCalc) v3.0.39.0 ダウンロード
マニュアルV1.189(v3.0.38.0以降対応版)
資産管理電卓(LineCalc)は自分で資産運用の管理、シミュレーションに使うために作ったものです(画面はプログラム例です)。
使用例などは blog でいくつか公開していますのでそちらを参照ください。
サンプルソースなども載っていますので実行できると思います。
ちょっとした計算やネットからの情報収集、バッチ処理、分析、文字列加工など気軽に電卓のように使えるようになっています。
WEBからの ,(カンマ)つき数値をそのまま扱えます(区切りとして使うにはスペース必用)。
株価等の記録をグローバル変数に記載しておけば自動で保存、次にまた読み込まれます。
ライセンス認証がありますが、ネット関係のライセンス問題がある部分は公開していませんがその他制限はありません。
LCS(LineCalcScript)という言語を実行することが基本となり、1+1等の計算も LCS の実行になります。
構文は簡単なので内部関数に慣れれば、簡単に複利計算やちょっとしたグラフを書いてみたり日々の資産を記録したりできます。
プログラムを作ったことのある人向けです。
LCSのサンプルコードスネークゲーム
(※)上記ソースをコピーして計算式エリアに貼り付けて実行してください。昔懐かしスネークゲームです。
キーボードの上下左右キーで向きが変わります。
ここをご覧ください
シューティングゲーム
ここからダウンロードしてコピペで貼り付けて下さい。
ここをご覧ください
21ゲーム
ここをご覧ください
神経衰弱
ここをご覧ください
LineCalcSetup.zip を解凍して setup.exe を起動してください。
もし、起動しようとして、
上記画面が出た場合、詳細情報を押して、
実行ボタンを押してください。
マニュアルはWindowsメニューから LineCalc の下かトップリンクから取得してください。
アンインストールはウインドウズのメニュー -> アプリから行ってください。
setup.exe をもう一度起動しても削除メニューが出てきます。
インストールの詳しい説明はインストール後マニュアルを参照してください。
質問は以下にお願いします。
sort等高速化,etc(v3.0.39.0) [資産管理電卓(LineCalc)]
資産管理電卓 v3.0.39.0 で以下の修正を行いました。
・sort,reverse 高速化
・関数定義ダイアログでの配列変数の位置移動高速化
・配列削除での部分配列対応漏れ修正
・fordim でタグ変数と配列が混在する不具合修正
・isvar,isdim対応
・forcnt 対応
・配列削除での部分配列対応漏れ修正
多次元配列を削除した場合に他の次元の配列の内部構造が残り続ける不具合を修正しました。
・fordim でタグ変数と配列が混在する不具合修正
fordim で1次元配列の場合タグは変数、多次元配列の場合はタグは配列になりますが、1次元と多次元が混在した配列ではタグが前回のループの変数、配列が残ってしまい、変数、配列混在してしまっていたのを修正しました。
・isvar,isdim対応
ID が変数か配列かを判定する isvar isdim 内部関数を作成しました。
配列の要素については変数となります。
・forcnt 対応
コンテキストリソース内の定義変数を羅列して式を実行する内部関数 forcnt を作成しました。
ford のコンテキストリソース版です。
コンテキスト内配列要素も1変数として処理でき コンテキストIDを保存した変数.(tag変数名) として動的ID生成を利用してアクセスできます。
・sort,reverse 高速化
・関数定義ダイアログでの配列変数の位置移動高速化
・配列削除での部分配列対応漏れ修正
・fordim でタグ変数と配列が混在する不具合修正
・isvar,isdim対応
・forcnt 対応
・配列削除での部分配列対応漏れ修正
多次元配列を削除した場合に他の次元の配列の内部構造が残り続ける不具合を修正しました。
・fordim でタグ変数と配列が混在する不具合修正
fordim で1次元配列の場合タグは変数、多次元配列の場合はタグは配列になりますが、1次元と多次元が混在した配列ではタグが前回のループの変数、配列が残ってしまい、変数、配列混在してしまっていたのを修正しました。
・isvar,isdim対応
ID が変数か配列かを判定する isvar isdim 内部関数を作成しました。
配列の要素については変数となります。
・forcnt 対応
コンテキストリソース内の定義変数を羅列して式を実行する内部関数 forcnt を作成しました。
ford のコンテキストリソース版です。
コンテキスト内配列要素も1変数として処理でき コンテキストIDを保存した変数.(tag変数名) として動的ID生成を利用してアクセスできます。
waitresall関数呼び出しリソース対応,etc(v3.0.31.0) [資産管理電卓(LineCalc)]
資産管理電卓 v3.0.31.0 で以下の修正を行いました。
・パースエラー修正
・& が連続した場合の文字列結合高速化
・waitresall で関数呼び出しで作成されたリソースの対応
・&= 配列対応
・関数配列返し高速化
・デバッグダイアログでのストリングバッファリソース内容表示対応
・&=,+=,-=.*=,/= コンテキストリソース非対応修正
・関数配列返し時の不具合修正
・配列削除高速化
・参照のある関数を削除すると参照先がクリアされる不具合修正
・&=の帰り値の不具合修正
・ライブラリ更新
・パースエラー修正
配列アクセス、関数呼び出しのパースエラーを修正しました。
・& が連続した場合の文字列結合高速化
& が連続した場合の速度を高速化しました。
長い文字列の場合に高速化されます。
・waitresall で関数呼び出しで作成されたリソースの対応
waitresall は関数内で作成されたリソースが対象で関数を呼び出して呼び出し先で作成されたリソースは対象外でしたがリソース種別の前に "FNC (スペース)" とつけることで関数呼び出しで作成されたリソースも対象にするようにしました。
上記では関数 tes 内で作成されたプロセスリソースの終了を待ちます。
"fnc" だけ指定すると種別は全て(コンテキスト、ストリングバッファリソース除く)になります。
上記ではプロセスリソースを明示しています。
・&= 配列対応
&= 演算子で配列に対応しました。
上記は
上記と同等で配列結合は文字列変換されることなく高速です。
・関数配列返し高速化
関数から巨大な配列を返した場合今までは一旦文字列に変換していましたが、文字列変換をなくし内部コピーするようにしました。
若干の高速化とともに使用メモリが減少しています。
コピーされるのは変わりなく速度は低速なので巨大な配列を関数呼び出し間で受け渡す場合はコンテキストリソース、無名関数を使用すると高速になります。
配列はあくまで通常変数の集まりですので巨大配列(10000を超えるような)配列を扱う場合メモリや速度の調整が必要になる場合があります。
ファイルに保存する、コンテキストリソース上に作成するなどの対応が必要になってきます。
・&=,+=,-=.*=,/= コンテキストリソース非対応修正
上記演算子で左項にコンテキストリソースの変数を指定した場合正常に動作しない不具合を修正しました。
・デバッグダイアログでのストリングバッファリソース内容表示対応
デバッグダイアログでバインドされたストリングバッファリソースの内容を表示するように対応しました。内容が長い場合は省略されますが、変数部分(文字列部分ではないです)の行をダブルクリックすると全文字列が表示されます。
・関数配列返し時の不具合修正
配列を返した場合にコンテキストリソースが含まれていた場合稀にアクセス不能になる不具合を修正しました。
・配列削除高速化
配列の消去を高速化しました。
・参照のある関数を削除すると参照先がクリアされる不具合修正
無名関数を引数として渡し、その引数の関数を del で削除すると呼び出し元の全変数が削除される不具合を修正しました。
・&=の帰り値の不具合修正
&= 演算子で帰り値が返されない場合があり返すようにしました。
左項がストリングバッファの場合、帰り値は計算後の文字列ではなく左項の変数の内容(ストリングバッファリソースのID値)となります。
・パースエラー修正
・& が連続した場合の文字列結合高速化
・waitresall で関数呼び出しで作成されたリソースの対応
・&= 配列対応
・関数配列返し高速化
・デバッグダイアログでのストリングバッファリソース内容表示対応
・&=,+=,-=.*=,/= コンテキストリソース非対応修正
・関数配列返し時の不具合修正
・配列削除高速化
・参照のある関数を削除すると参照先がクリアされる不具合修正
・&=の帰り値の不具合修正
・ライブラリ更新
・パースエラー修正
配列アクセス、関数呼び出しのパースエラーを修正しました。
・& が連続した場合の文字列結合高速化
& が連続した場合の速度を高速化しました。
長い文字列の場合に高速化されます。
・waitresall で関数呼び出しで作成されたリソースの対応
waitresall は関数内で作成されたリソースが対象で関数を呼び出して呼び出し先で作成されたリソースは対象外でしたがリソース種別の前に "FNC (スペース)" とつけることで関数呼び出しで作成されたリソースも対象にするようにしました。
{ fnc(tes,prc("delay(2000)")), for(cnt,1, 10, 1, tes), waitresall("fnc") }
上記では関数 tes 内で作成されたプロセスリソースの終了を待ちます。
"fnc" だけ指定すると種別は全て(コンテキスト、ストリングバッファリソース除く)になります。
{ fnc(tes,prc("delay(2000)")), for(cnt,1, 10, 1, tes), waitresall("fnc prc") }
上記ではプロセスリソースを明示しています。
・&= 配列対応
&= 演算子で配列に対応しました。
{ tmp = [1, 2], tmp &= [3] // tmp は [1,2,3] }
上記は
{ tmp = [1, 2], appenddim([3],tmp) }
上記と同等で配列結合は文字列変換されることなく高速です。
・関数配列返し高速化
関数から巨大な配列を返した場合今までは一旦文字列に変換していましたが、文字列変換をなくし内部コピーするようにしました。
若干の高速化とともに使用メモリが減少しています。
コピーされるのは変わりなく速度は低速なので巨大な配列を関数呼び出し間で受け渡す場合はコンテキストリソース、無名関数を使用すると高速になります。
配列はあくまで通常変数の集まりですので巨大配列(10000を超えるような)配列を扱う場合メモリや速度の調整が必要になる場合があります。
ファイルに保存する、コンテキストリソース上に作成するなどの対応が必要になってきます。
・&=,+=,-=.*=,/= コンテキストリソース非対応修正
上記演算子で左項にコンテキストリソースの変数を指定した場合正常に動作しない不具合を修正しました。
・デバッグダイアログでのストリングバッファリソース内容表示対応
デバッグダイアログでバインドされたストリングバッファリソースの内容を表示するように対応しました。内容が長い場合は省略されますが、変数部分(文字列部分ではないです)の行をダブルクリックすると全文字列が表示されます。
・関数配列返し時の不具合修正
配列を返した場合にコンテキストリソースが含まれていた場合稀にアクセス不能になる不具合を修正しました。
・配列削除高速化
配列の消去を高速化しました。
・参照のある関数を削除すると参照先がクリアされる不具合修正
無名関数を引数として渡し、その引数の関数を del で削除すると呼び出し元の全変数が削除される不具合を修正しました。
・&=の帰り値の不具合修正
&= 演算子で帰り値が返されない場合があり返すようにしました。
左項がストリングバッファの場合、帰り値は計算後の文字列ではなく左項の変数の内容(ストリングバッファリソースのID値)となります。
ストリングバッファリソース演算対応,etc(v3.0.17.0) [資産管理電卓(LineCalc)]
資産管理電卓 v3.0.17.0 で以下の修正を行いました。
・ストリングバッファリソース & 演算子での文字列変換対応
・&=,+=,-=,*=,/= 対応
・演算子パースエラー修正
・ストリングバッファリソース & 演算子での文字列変換対応
ストリングバッファリソースにバインドされた変数を &(文字列結合) と一緒に使った場合自動で文字列に変換するようにしました。
上記で結合時に rdump により明示的に文字列に変換する必要がなくなりました。
sb & "" とすることで rdump(sb) とすることと同じになります。
・&=,+=,-=,*=,/= 対応
左項の変更演算子を追加しました。
&=
左項を文字列として右項の文字列を追加します。
左項がストリングバッファリソースにバインドされた変数の場合ストリングバッファリソースに追加されます。
右項がストリングバッファリソースにバインドされた変数の場合文字列に変換されます。
ストリングバッファリソースへの文字列追加は長さが長くなると通常文字列より格段に高速になります。
+=,-=,*=,/=
足し算、引き算、掛け算、割り算を左項の値から右項を適用し左項の変数に格納します。
・ストリングバッファリソース & 演算子での文字列変換対応
・&=,+=,-=,*=,/= 対応
・演算子パースエラー修正
・ストリングバッファリソース & 演算子での文字列変換対応
ストリングバッファリソースにバインドされた変数を &(文字列結合) と一緒に使った場合自動で文字列に変換するようにしました。
{ sb = stringbuffer("foo"), sb2 = stringbuffer("yaa"), lprint(sb & " taa"), // foo taa と表示 lprint(sb & " " & sb2), // foo yaa と表示 }
上記で結合時に rdump により明示的に文字列に変換する必要がなくなりました。
sb & "" とすることで rdump(sb) とすることと同じになります。
・&=,+=,-=,*=,/= 対応
左項の変更演算子を追加しました。
&=
左項を文字列として右項の文字列を追加します。
左項がストリングバッファリソースにバインドされた変数の場合ストリングバッファリソースに追加されます。
右項がストリングバッファリソースにバインドされた変数の場合文字列に変換されます。
{ sb = stringbuffer("foo"), sb2 = stringbuffer("yaa"), sb &= sb2, lprint(rdump(sb)), // fooyaa と表示 sb &= " " & sb2, lprint(sb & ""), // fooyaa yaa と表示 sb & "" は rdump のかわり txt = "paa", txt &= " naa", lprint(txt) // paa naa と表示 }
ストリングバッファリソースへの文字列追加は長さが長くなると通常文字列より格段に高速になります。
+=,-=,*=,/=
足し算、引き算、掛け算、割り算を左項の値から右項を適用し左項の変数に格納します。
GC高速化、デッドロック解消、etc(v3.0.15.0) [資産管理電卓(LineCalc)]
資産管理電卓 v3.0.15.0 で以下の修正を行いました。
・GC高速化
・リソース削除でのデッドロック修正
・waitresall,delresall でのコンテキストリソース、ストリングバッファリソース除外
・callcnt 高速化
・GC無効リソースID削除高速化
・同一コンテキストリソース複数変数バインドで稀にGCリソース削除漏れ対応
・callcnt参照先変数新規リソースバインドで削除漏れ対応
・callcnt リソース削除漏れ高速化
・callcnt prc 参照リソース削除漏れ対応
・GC削除時高速化、リファクタリング
・GC高速化
大量にリソースを作成した場合 GC の動作が遅くなっていましたが高速化しました(大量といっても電卓なので100000個ぐらいです)。
・リソース削除でのデッドロック修正
リソース削除とGCでのリソース削除がバディングした場合デッドロックを起こすことがあり修正しました。中断、エラーでも発生します。
・waitresall,delresall でのコンテキストリソース、ストリングバッファリソース除外
コンテキストリソース、ストリングバッファリソースは GC により削除のタイミングが遅くなることがあり、また GC により削除されますので waitresall,delresall の対象から外しました。
・callcnt 高速化
callcnt の GC 処理が遅かったので高速化しました。
・GC無効リソースID削除高速化
delres で強制削除されたリソースの GC を高速化しました。
・同一コンテキストリソース複数変数バインドで稀にGCリソース削除漏れ対応
同一コンテキストリソースを2変数にバインドして片方を unbindres した場合GC削除漏れが発生するパターンがあり対応しました。
・callcnt参照先変数新規リソースバインドで削除漏れ対応
callcnt を prc にパワメータなどで渡し親関数実行終了後 callcnt のリソースに新規リソースをバインドした変数を追加すると削除漏れが発生していたのを修正。
・callcnt リソース削除漏れ高速化
callcnt のリソース削除漏れ対応を高速化しました。
・callcnt prc 参照リソース削除漏れ対応
prc で無名関数を渡し呼び出し元に定義されたコンテキストにバインドされた変数にアクセスして、その変数上にリソースにバインドされた変数を作ると削除漏れが起こるのを修正しました。
・GC削除時高速化、リファクタリング
GCの削除時の動作を高速化しました。削除時のコードをリファクタリングしました。
・GC高速化
・リソース削除でのデッドロック修正
・waitresall,delresall でのコンテキストリソース、ストリングバッファリソース除外
・callcnt 高速化
・GC無効リソースID削除高速化
・同一コンテキストリソース複数変数バインドで稀にGCリソース削除漏れ対応
・callcnt参照先変数新規リソースバインドで削除漏れ対応
・callcnt リソース削除漏れ高速化
・callcnt prc 参照リソース削除漏れ対応
・GC削除時高速化、リファクタリング
・GC高速化
大量にリソースを作成した場合 GC の動作が遅くなっていましたが高速化しました(大量といっても電卓なので100000個ぐらいです)。
・リソース削除でのデッドロック修正
リソース削除とGCでのリソース削除がバディングした場合デッドロックを起こすことがあり修正しました。中断、エラーでも発生します。
・waitresall,delresall でのコンテキストリソース、ストリングバッファリソース除外
コンテキストリソース、ストリングバッファリソースは GC により削除のタイミングが遅くなることがあり、また GC により削除されますので waitresall,delresall の対象から外しました。
・callcnt 高速化
callcnt の GC 処理が遅かったので高速化しました。
・GC無効リソースID削除高速化
delres で強制削除されたリソースの GC を高速化しました。
・同一コンテキストリソース複数変数バインドで稀にGCリソース削除漏れ対応
同一コンテキストリソースを2変数にバインドして片方を unbindres した場合GC削除漏れが発生するパターンがあり対応しました。
・callcnt参照先変数新規リソースバインドで削除漏れ対応
callcnt を prc にパワメータなどで渡し親関数実行終了後 callcnt のリソースに新規リソースをバインドした変数を追加すると削除漏れが発生していたのを修正。
・callcnt リソース削除漏れ高速化
callcnt のリソース削除漏れ対応を高速化しました。
・callcnt prc 参照リソース削除漏れ対応
prc で無名関数を渡し呼び出し元に定義されたコンテキストにバインドされた変数にアクセスして、その変数上にリソースにバインドされた変数を作ると削除漏れが起こるのを修正しました。
・GC削除時高速化、リファクタリング
GCの削除時の動作を高速化しました。削除時のコードをリファクタリングしました。
cpcnt での callcnt コピー廃止、class par 廃止,etc(v2.0.71.0) [資産管理電卓(LineCalc)]
資産管理電卓 v2.0.71.0 で以下の修正を行いました。
・cpcnt で callcnt で作成したコンテキストはコピーせずIDのみコピー
・class で par 廃止
・solve で誤差返値対応
・callcnt で作成したリソースがGCで削除されない不具合対応
cpcnt で callcnt で作成したコンテキストをコピーしていましたが、テンポラリの変数エリアのためテンポラリ変数などコピーすると速度的に問題が多くなるためコピーせずIDをそのまま代入するようにしました。
class で par を設定すると this と被ってくるので使い方が難しく廃止しました。
親の構造にアクセスする方法も多数あるため必要なときに個別にプログラムして下さい。
solve で"値:誤差"として誤差を返すようにしました。
":誤差"の部分は数値として認識されないため帰り値はそのまま数値として扱えます。
callcnt で作成したリソースが関数終了まで削除されない不具合を修正しました。
・cpcnt で callcnt で作成したコンテキストはコピーせずIDのみコピー
・class で par 廃止
・solve で誤差返値対応
・callcnt で作成したリソースがGCで削除されない不具合対応
cpcnt で callcnt で作成したコンテキストをコピーしていましたが、テンポラリの変数エリアのためテンポラリ変数などコピーすると速度的に問題が多くなるためコピーせずIDをそのまま代入するようにしました。
class で par を設定すると this と被ってくるので使い方が難しく廃止しました。
親の構造にアクセスする方法も多数あるため必要なときに個別にプログラムして下さい。
solve で"値:誤差"として誤差を返すようにしました。
":誤差"の部分は数値として認識されないため帰り値はそのまま数値として扱えます。
callcnt で作成したリソースが関数終了まで削除されない不具合を修正しました。
デバッグダイアログでの全表示、編集対応(v2.0.64.0) [資産管理電卓(LineCalc)]
資産管理電卓 v2.0.64.0 で以下の修正を行いました。
・dbg ダイアログ全文表示ボタン対応
・dbg ダイアログ編集ボタン対応
・aline中断無効不具合対応
・並列リソース作成安定化
・配列編集ダイアログモードレス化
・GC調整
・終了時にGC先に停止する不具合修正
・終了時リソース破棄
・logout並列対応
dbgコマンドのダイアログで合成した文字列を実行している場合などでソースの全文を表示して中断位置にカーソルを移動する全文表示ボタンを作成しました。
エラーダイアログの全文表示ダイアログでも該当部分にカーソルが移動します。
移動位置はソースが読み込まれた位置なので実行された位置の後ろに移動します。
dbgコマンドでは呼出履歴がドロップダウンリストで選択できますが全文表示ボタンでは選択した呼び出し元の実行位置のソースが表示されます。
編集ボタンを dbg ダイアログにも追加しました。
こちらは中断位置の行の先頭にカーソルが移動します。
その他不具合修正を行いました。
・dbg ダイアログ全文表示ボタン対応
・dbg ダイアログ編集ボタン対応
・aline中断無効不具合対応
・並列リソース作成安定化
・配列編集ダイアログモードレス化
・GC調整
・終了時にGC先に停止する不具合修正
・終了時リソース破棄
・logout並列対応
dbgコマンドのダイアログで合成した文字列を実行している場合などでソースの全文を表示して中断位置にカーソルを移動する全文表示ボタンを作成しました。
エラーダイアログの全文表示ダイアログでも該当部分にカーソルが移動します。
移動位置はソースが読み込まれた位置なので実行された位置の後ろに移動します。
dbgコマンドでは呼出履歴がドロップダウンリストで選択できますが全文表示ボタンでは選択した呼び出し元の実行位置のソースが表示されます。
編集ボタンを dbg ダイアログにも追加しました。
こちらは中断位置の行の先頭にカーソルが移動します。
その他不具合修正を行いました。
エラーダイアログでのデバッグダイアログ表示対応(v2.0.51.0) [資産管理電卓(LineCalc)]
資産管理電卓 v2.0.51.0 で以下の修正を行いました。
・エラーダイアログでのデバッグダイアログ表示対応
・エラーダイアログで落ちる不具合対応
・try でエラーダイアログが出る不具合対応
・this バインド対応
・関数呼び出しのある try でエラーダイアログが出る不具合修正
エラーダイアログから変数の内容を確認できるようにしました。
その他不具合修正を行いました。
・エラーダイアログでのデバッグダイアログ表示対応
・エラーダイアログで落ちる不具合対応
・try でエラーダイアログが出る不具合対応
・this バインド対応
・関数呼び出しのある try でエラーダイアログが出る不具合修正
エラーダイアログから変数の内容を確認できるようにしました。
その他不具合修正を行いました。
エラーダイアログでの全文表示対応(v2.0.47.0) [資産管理電卓(LineCalc)]
資産管理電卓 v2.0.47.0 で以下の修正を行いました。
・エラーダイアログでの全文表示対応
・エラーダイアログでの全文表示改行されない安全対策
合成した文字列を実行した場合など元ソースがない場合エラー箇所が分かりづらかったのでエラーダイアログで全文表示ボタンを追加してソース全体を表示できるようにしました。
全文表示ボタンで改行されないパターンがあり安全対策で対応しました。
・エラーダイアログでの全文表示対応
・エラーダイアログでの全文表示改行されない安全対策
合成した文字列を実行した場合など元ソースがない場合エラー箇所が分かりづらかったのでエラーダイアログで全文表示ボタンを追加してソース全体を表示できるようにしました。
全文表示ボタンで改行されないパターンがあり安全対策で対応しました。
callcnt unbindres 対応(v2.0.44.0) [資産管理電卓(LineCalc)]
資産管理電卓 v2.0.44.0 で以下の機能対応不具合修正を行いました。
・callcnt の対応
・unbindres の対応
・稀に中断メッセージが出ない不具合対応
・prc GC デッドロック対応
・帰り値一時変数並列対応
・入れ子帰り値一時変数対応
・cpdim自己thisコピー先参照対応
・ref対応
・cpycnt を cpcnt に変更(cpdim に合わせる)
・cpcntコンテキストリソースバインド漏れ対応
callcnt は関数呼び出し元の変数郡(コンテキスト)にアクセスするための内部関数で
コンテキストリソースとして機能します。
ガベージコレクタ対応で対応不能となっていましたが、複数の値を高速に返したりできるのでなんとか復活させました。
使い方は callcnt.変数名 で呼び出し元の変数(関数)にアクセスできます。
作成も可能です。
上記では関数 tes は引数として出力先変数名を受けてその変数に値を返しています。
C# の in , out , ref 引数に相当する機能が実現できます。
・unbindresの対応
unbindres も対応しました。
unbindres ではバインドの解除だけでバインドされているリソースの削除は行われません(既にバインドされた変数のどれかが削除済みのものはガベージコレクタの対象になります)。
context,stringbuffer については作成時にデフォルトでシステム変数にバインドされ関数終了時に削除されます。
callcnt,unbindres を実装したので v2 系の v1 との非互換性は context,stringbuffer で bindres が必要なくなり、= 代入でバインドされ、バインドされない場合は関数終了時に消去されることと cpycnt が cpcnt に変更になったことです。
context,stringbufferについてはリソース管理は必要なくなりましたが、明示的に bindres を適用することもでき今までのソースはそのまま動作します。
上記の記述は、
代入だけで済むようになりました。今まで通りの記述も可能です。
リソースIDを変数に入れず文字列として管理したり、リソースを作って変数を介さず数値を人が確認して手作業で管理しているような特殊な場合以外は互換性は保たれます。
プログラム終了後も context,stringbuffer リソースを残したい(全体で使うクラス等)はグローバル変数に入れておけば残すことができます(アプリを終了すると消えます)。
・cpdim自己thisコピー先参照対応
cpcnt,cpdim では自己 this はコピー先を参照するように対応しました。
関数や配列の代入でのコピーではコピー元のコンテキストが参照されます。
123:321:321 と表示されます。
・ref対応
関数定義の変数でも評価せず文字列として定義内容を返します。
クロージャやthisの参照は削除されますが簡便に関数や変数をファイルに保存できます。
関数文字列は def で関数に登録します。
配列に対しては変数に直接代入できる文字列が返されます。
クロージャやthisの参照は削除されますが簡便に配列全体をファイルに保存、復元する場合に使用できます。
・callcnt の対応
・unbindres の対応
・稀に中断メッセージが出ない不具合対応
・prc GC デッドロック対応
・帰り値一時変数並列対応
・入れ子帰り値一時変数対応
・cpdim自己thisコピー先参照対応
・ref対応
・cpycnt を cpcnt に変更(cpdim に合わせる)
・cpcntコンテキストリソースバインド漏れ対応
callcnt は関数呼び出し元の変数郡(コンテキスト)にアクセスするための内部関数で
コンテキストリソースとして機能します。
ガベージコレクタ対応で対応不能となっていましたが、複数の値を高速に返したりできるのでなんとか復活させました。
使い方は callcnt.変数名 で呼び出し元の変数(関数)にアクセスできます。
作成も可能です。
{ fnc(tes, { sum = 0, for(cnt, 1, 100, 1, { v = cnt * cnt, sum = sum + v, callcnt.(@1)[cnt] = v // 呼び出し元の配列変数に値を格納して返す } ), callcnt.(@2) = sum // 呼び出し元の変数に値を返す } ), tes(^tmp, ^sum), ford(tag, tmp, {lprint(tmp[tag] & ":")}), lprint(sum) }
上記では関数 tes は引数として出力先変数名を受けてその変数に値を返しています。
C# の in , out , ref 引数に相当する機能が実現できます。
・unbindresの対応
unbindres も対応しました。
unbindres ではバインドの解除だけでバインドされているリソースの削除は行われません(既にバインドされた変数のどれかが削除済みのものはガベージコレクタの対象になります)。
context,stringbuffer については作成時にデフォルトでシステム変数にバインドされ関数終了時に削除されます。
callcnt,unbindres を実装したので v2 系の v1 との非互換性は context,stringbuffer で bindres が必要なくなり、= 代入でバインドされ、バインドされない場合は関数終了時に消去されることと cpycnt が cpcnt に変更になったことです。
context,stringbufferについてはリソース管理は必要なくなりましたが、明示的に bindres を適用することもでき今までのソースはそのまま動作します。
{ bindres(ctx,context), bindres(stb,stringbuffer) }
上記の記述は、
{ ctx = context, stb = stringbuffer }
代入だけで済むようになりました。今まで通りの記述も可能です。
リソースIDを変数に入れず文字列として管理したり、リソースを作って変数を介さず数値を人が確認して手作業で管理しているような特殊な場合以外は互換性は保たれます。
プログラム終了後も context,stringbuffer リソースを残したい(全体で使うクラス等)はグローバル変数に入れておけば残すことができます(アプリを終了すると消えます)。
・cpdim自己thisコピー先参照対応
cpcnt,cpdim では自己 this はコピー先を参照するように対応しました。
関数や配列の代入でのコピーではコピー元のコンテキストが参照されます。
{ ctx = context, ctx2 = context, fnc(ctx.fn[0],{this.yaa}), ctx.yaa = 123, ctx2.fn = ctx.fn, // 代入では ctx2.fn の this は ctx を参照 ctx2.yaa = 321, lprint(ctx2.fn[0] & ":"), // 123 cpdim(ctx.fn,ctx2.fn), // cpdim ではコピー先参照 lprint(ctx2.fn[0] & ":"), // 321 ctx2 = cpycnt(ctx), // cpcnt ではコピー先参照 ctx2.yaa = 321, lprint(ctx2.fn[0]), // 321 }
123:321:321 と表示されます。
・ref対応
関数定義の変数でも評価せず文字列として定義内容を返します。
{ fnc(tes,{123}), delfile("tes.txt"), fprint("tes.txt",ref(tes)), // tes の定義内容をファイル tes.txt に保存 def(tes2,fload("tes.txt")), // ファイル tes.txt を読み込み tes2 を定義 tes2 }
クロージャやthisの参照は削除されますが簡便に関数や変数をファイルに保存できます。
関数文字列は def で関数に登録します。
{ tmp = [1, 2], fnc(tmp[2],123), delfile("tes.txt"), fprint("tes.txt", ref(tmp)), // 配列 tmp の代入可能な文字列を得る tmp2 = fload("tes.txt"), // 配列をファイルから読み込み設定 tmp2[2] }
配列に対しては変数に直接代入できる文字列が返されます。
クロージャやthisの参照は削除されますが簡便に配列全体をファイルに保存、復元する場合に使用できます。