★ソフトの概要 クリップボードを介した  ■関数電卓機能  ■sysColorの設定機能  ■PascalコードをJavaScriptに変換するお手伝い機能 が入っています。 ★本ソフトのコンセプト ・常駐しない ・クリップボード入出力以外は出来るだけ何もしない ・高速 (起動から結果が出るまで) その目的の為にはexeサイズを小さく DLL類も使っていません。 ただ、その結果、前回の計算結果を記録していない事に注意して下さい。 クリップボード経由なので文字コードの問題もあまり生じない事もメリットです(勝手に変換されるので) ★作者への連絡先 作者:裏目小僧  https://urame.sakura.ne.jp/w/wiki.cgi?page=ClipBd%C5%C5%C2%EE  に掲示板機能があるので、こちらで御覧楽下さい。 ★取り扱い種別(フリーソフト、シェアウェア 等) 本ソフトのご利用はご自由に。また上記webサイトにはソースファイルもあります。 ソースを含めてご自由にご利用下さい。 ソースコードの一部や全部を利用・改変する場合でもご連絡等も不要です。 ★動作環境  windows32bitアプリとして作成されています。WinXP と Win11で動作確認しています。 win32APIのみを利用してるので古いOSや仮想環境でも問題ないと思います。 ★インストール・アンインストール方法 実行ファイルさえあれば動作します。 Win11ならZIP内のままでも動作しますがsysColor設定機能を使う場合は解凍した方が良いでしょう。  sysColor設定機能により実行ファイルを置いたフォルダにファイルが作成される事があります。 解凍しても100kb以下のサイズでしかありません。 ランチャーやエディターの外部ツールに登録すると便利です。 アンインストール方法は、ファイル削除のみで問題ありません。  レジストリ等には一切書き込みしていません。 ★ソースのビルド方法 Delphi5で作成していますからClipBdCalc.Dprをコンパイルすればビルド出来ます。 なおstringが16bit化したDelphiでは難しいかもしれません。 Lazarusでビルドするには LazarusのDelphi変換を利用します。 □クロスプラットフォーム のチェックを外して下さい・ 詳細は https://urame.sakura.ne.jp/w/wiki.cgi/lazarus?page=Lazarus%A4%C7ClipBd%C5%C5%C2%EE%28ANSI%CA%B8%BB%FA%CE%F3%A4%F2FPC%A4%C7%BB%C8%A4%A6%29 Lazarus 2.2.4でビルド可能な事は確認しています。 -------------------------------------------------------------- ■関数電卓機能 ・エディター等でプログラミング中に関数の入った計算結果を確認したい時など ・計算式をコピーしてClipBd電卓.exeを実行すれば結果がペースト可能状態となります。 ・代入は = := どちらも代入となります。 例 440* 2^(3/12) -この行をcopyしてClipBd電卓.exeを実行すれば 440* 2^(4/12)//523.251130601 -と//の後に計算結果が帰ります。//を含めてcopyした場合は//以後は結果に置換されます w := 2*PI/6; b = sin(w); c=cos(w); -こういう代入だけだと結果は分かりません w := 2*PI/6; b = sin(w); c=cos(w); w b c -と確認したい変数名を含めてコピーして下さいペースト結果は w := 2*PI/6; b = sin(w); c=cos(w); w//1.047197551 b//0.866025404 c//0.500000000 -となります。 ■sysColorの設定機能 ・windowsが64bitとなりシステムカラーの設定機能が消えたので追加したものです ・32bitアプリ類を利用する時一時的にシステムカラーを変更する目的で利用します。 ・エディター類で 以下の文字をコピーしてClipBd電卓.exeを実行します。 #scolのみなら 現在の設定値がクリップボードにペーストされます。 その内容をエディターに貼り付け、内容を変更し再度コピーしClipBd電卓.exeを実行すれば反映されます この作業で変更した色をファイル上に記録します #scol +name で nameに現在の設定値を書き出す その設定が不要になったら #scol -name で nameを削除する 以前の設定をシステムカラーとして使うのは #scol name で SysColorにname.scol.txtを設定 #scol のみのクリップボードへのコピーで ClipBd電卓.exeを実行しペーストした結果は COLOR_WINDOW =clWhite // 5ウィンドウの背景 関連付けられている前景色はCOLOR_WINDOWTEXTされ、COLOR_HOTLITE COLOR_WINDOWTEXT =clBlack // 8ウィンドウ内のテキスト 関連付けられている背景色がCOLOR_WINDOW COLOR_HIGHLIGHT =$D77800 //13コントロールで選択されている項目 関連付けられている前景色がCOLOR_HIGHLIGHTTEXT COLOR_HIGHLIGHTTEXT =clWhite //14コントロールで選択されている項目のテキスト 関連付けられている背景色がCOLOR_HIGHLIGHT COLOR_3DFACE =$F0F0F0 //153 Dとダイアログ ボックスの背景の面の色 COLOR_GRAYTEXT =$6D6D6D //17灰色:無効のテキスト 現在のディスプレイ ドライバーが単色の灰色をサポートしていない場合、この色は 0 に設定 COLOR_BTNTEXT =clBlack //18プッシュ ボタン上のテキスト 関連付けられている背景色がCOLOR_BTNFACE COLOR_HOTLIGHT =$CC6600 //26ハイパーリンクまたはホット トラックアイテムの色 関連付けられている背景色がCOLOR_WINDOW COLOR_CAPTIONTEXT =clBlack // 9キャプション、サイズ ボックス、スクロール バーの矢印ボックス内のテキスト 関連付けられている背景色がCOLOR_ACTIVECAPTION COLOR_ACTIVEBORDER =$B4B4B4 //!10 アクティブなウィンドウの境界線 COLOR_INACTIVEBORDER =$FCF7F4 //!11 非アクティブなウィンドウの境界線 COLOR_APPWORKSPACE =$ABABAB //!12 複数のドキュメント インターフェイスMDI) アプリケーションの背景色 COLOR_BTNFACE =$F0F0F0 //!15 COLOR_INACTIVECAPTIONTEXT=clBlack //!19 非アクティブなキャプションのテキストの色 関連付けられている背景色がCOLOR_INACTIVECAPTION COLOR_INFOTEXT =clBlack //!23 ヒント コントロールのテキストの色 関連付けられている背景色がCOLOR_INFOBK COLOR_INFOBK =$E1FFFF //!24 ヒント コントロールの背景色 関連付けられている前景色がCOLOR_INFOTEXT COLOR_3DSHADOW =$A0A0A0 //!16 3Dの影の色 光源から離れたエッジの場合 COLOR_3DHILIGHT =clWhite //!20 3Dの強調表示の色 光源に面するエッジの場合 COLOR_3DDKSHADOW =$696969 //!21 3Dの濃い影 COLOR_3DLIGHT =$E3E3E3 //!22 3Dの明るい色 光源に面するエッジの場合 COLOR_DESKTOP =clBlack //! 1 デスクトップ となっています。色コードは#ではなく$なので注意して下さい 多くの場合は補色にする場合が多いので~を$や色名の前に付けると補色となります。 エディタ上で変更したら、その行を選択しコピーしClipBd電卓.exeを実行すれば反映されます。 windwos10以後 !の付いたシステムカラーの多くはwindowsが反映させないようになったようです 仮想マシン等で古いOSを使う場合には反映するので残しています。 COLOR_DESKTOPはアプリの色ではなくデスクトップの色設定なので注意して下さい。 ■PascalコードをJavaScriptに変換するお手伝い機能 使い方: パスカルのソースコードをエディタ上で開き 行頭に #P2Js と置いて下さい { #P2Js } のように2行挿入しておけば挿入したままでも問題ないでしょう この #P2Js を含めて変換したい行を選択しコピーし ClipBd電卓.exeを実行すれば結果がペースト可能状態となります 対応していない事: ・Repeat Until 自分が使わないから ・case 自分が使わないから ・Type JavaScriptがそもそも変数に型が無いから ・ポインタや参照演算子の類 ・関数内関数 ・for文の変数には毎回letを付けてしまう 等 let付けの怪しさ ・型定義を外すだけなので 配列なら var arry;のままですから var arry=[];のように修正が必要 やってくれる事: ・exit Pascalは関数の終了なので returnか return Resultに置換 ・関数の先頭で let Result; 最後に return Result追加 ・'文字列'#13のような文字列を "文字列\r" と置換 ・inc(a)を++aに置換 inc(a,3)をa+=3に置換 ・setlength(a,3)をa.length=3に置換 length(a)をa.lengthに置換 ・piをMath.PI 他Mathにありそうな関数は Math.を付け小文字にする ・ln()をMath.log()に置換 (他にも名前が違う場合もあるだろうけど調査不足) ・sqr(x)を2乗sqr(x)に置換するので自分で2乗に修正すること例 (x)**2 のように ・変数名を最初に使った名前に大文字小文字を固定する ・$abcのような数を 0xabcと置換 ・if while for 文を置換 ・procedure をfunctionに置換 ・var const の型名を削除 ・関数内のvar定義を消して 利用時にletを付けまくる(無駄な分は自分で修正して下さい) ・AND OR XOR NOT 等の & | ^ 置換(ビット演算子としてるので論理型なら自分で修正) ・:=を= =を== <>を!= ・コメント{〜}を/*〜*/に置換 変換方針: ・ローカル変数は消去する。代わりに変数名を覚えておいて大文字小文字のゆらぎを吸収する ・ローカル変数は最初に代入する時に letを付ける ネストの深さが戻ったらまたletを付ける ・・このために、ループ内で代入した値を後で使うような場合は問題が起きます。pascal側でループ外で0でも代入しておきましょう。 ・グローバル変数には宣言時にvar を付ける ・・宣言してないラベルはグローバル変数と同様に登録して最初に使った大文字小文字に合わせます ・const宣言は宣言時にconst を付ける ・case文とか自分が使っていない機能は後回し ・ポインタとか使ってるコードは考えない。Pascal側で使わないように修正してから変換すればいいや ・クラスとかメソッドとかも JavaScriptにどう変換して良いかもわからないからPascal側で変更 ・文字列・数字・コメント類は追いかけて変換対象にならない 注意:あくまでもお手伝い機能であり 完全な変換を目指したものではありません。   完全な変換をしてくれるものとして Pas2Js.exeが世界にはあります。 他:詳しい動作は https://urame.sakura.ne.jp/w/wiki.cgi?page=Pas2JavaSc%2Epas 本ファイル作成:2023/02/20 個人的に公開しただけではウイルス扱いされてダウンロードも出来ないようなのでVectorでの公開を目指しています