掲示板

BBS
アイコン設定
投稿者さん使い方
掲示板の主旨に反する投稿は掲載されません。掲載の是非は管理者が判断いたします。予めご了承願います。
K
KoYamaさん (8o4hkr6m)2023/6/20 03:32 (No.63583)削除
0071.ファイルの確認。
 今更ですが、「/Cmd(164)」として、ファイルを確認し易いコマンドを組み込みました。
 通常、ファイルを確認するには、「Edパス」または「エクスプローラ」を起動して確認します、これだと、そのファイルが、何処に保存してあるか、すぐ思い出せる時は、良いのですが、色々な種類のファイル、色々な仕様の検索コマンド、などなど、複雑になって来ると、「ファイル名」だけで、すぐ確認出来た方が、便利になります。
 そこで、「C:\Utl\EdZ\Ed.exe /Cmd(164) ファイル名(拡張子付き)」で、その存在有無、フル・パス、タイムスタンプが、確認出来ます。
 殆どの「Ed」関連ファイルは、これで、確認出来ます。
 この機能は、ファイル名を範囲指定し、コマンド「5.ファイル確認(Alt+Shift+F6)」で、編集中Text子フレームからも、使えます。「Id_DispChkFile」ですが。
 この場合、以前より有るコマンド「Alt+4~PopUpメニューから選択Open」「Alt+5~即Open」の機能と、調整し、フォルダ指定なら確認後PopUpメニュー選択Open、ファイルなら確認後即Openで、対応してあります。勿論、フル・パスで指定しても、出来ます。
返信
K
KoYamaさん (8o4hkr6m)2023/6/19 04:27 (No.63483)削除
0070.IndexOpen拡張。
 今初めて使う呼び名ですが、「IndexOpen」機能が有ります。これは、「Ed.exe」を起動する時の、「/Open_n,m,o,p,,,, 対象とするフル・パス」という起動オプションで、対象とするフル・パスから、指定したIndex「n,m,o,p,,,,」に該当するフル・パスを取出し、一気に開く機能の事です。
 つまり、「Ed.exe」の起動引数を、沢山スペース区切りで指定すると、コマンドラインが、とても長ったらしくなり、色々不都合が出て来るので、これを、1つの別のパスにまとめて、そのうちの、開く対象のパスを、Indexで、沢山示せる、機能です。
 で、最初はこの「対象とするフル・パス」が、「パス・リンク・Text」だけだったのですが、いつしか拡張して、これをフォルダのフル・パスでも扱えるようにしてあり、いかにも使えそうだったのですが、何故か、あまり、使っていなかったので、ここに来て、その原因がはっきり解り、しっかり使えるようにしました。
 説明が込み入って来るので、内部コードもまじえて説明しますが、このフォルダ対応が、実は「CEdCommon::ListUpFiles」という関数で、対応しており、これが、そのフォルダ直下のファイルやディレクトリを、リスト・アップして、「CPtrList」クラスにして返却する関数で、そのオプション・コードが、「0:ファイルだけソート無し、1:Dirもソート無し、2:ファイルだけ昇順ソート付き、3:Dirも昇順ソート付き、4:ファイルだけ降順ソート付き、5:Dirも降順ソート付き、6:ファイルだけタイムスタンプ昇順ソート付き、7:Dirもタイムスタンプ昇順ソート付き、8:ファイルだけタイムスタンプ降順ソート付き、9:Dirもタイムスタンプ降
順ソート付き」だったのですが、これが指定していなかった(つまり、デフォルトの0だった)のです。これを、今度、「2」にしました。
 それで、実は、「Edパス」が、普通にあるフォルダを特定して、その直下を一覧すると、これも実は、内部で「CEdCommon::ListUpFiles」で、オプション・コード「3」にしてありまして、それで、「IndexOpen」の、インデックスが指定し易くなった訳で、で、最近「研究発表」関連の全ファイルを、朝一バッチにて、WindowsXp版HPノートPC側から、Windows10版NecノートPC側へ、リリース更新するようにしていて、そうすると、「パスとメニュー.txt」の中身がドライブ[C]用から、ドライブ[E]用に、更新されてしまう不都合が有り、であればと、ショートカットを変更して、この
拡張された「IndexOpen」機能を使って、無事、スムースに更新出来るように、なりました。
 当然「パスとメニュー.txt」は、もう廃止しました。
返信
K
KoYamaさん (8o4hkr6m)2023/6/16 03:43 (No.63144)削除
0069.Cmd(161、162)。
 Windowsの場合、バッチとexeなどを組合わせて使っていると、先に起動したコマンドの実行が、終了する前に、後から起動したコマンドの実行が重なると、あっ、まあ、通常は先に起動したコマンドのインスタンスが終了する迄は、バッチに制御が戻りませんが、先に起動されたexeの中で、色々な操作が出来て、例えば、中で別のexeを「ShellExecute」すると、これは、別の実行空間の中で、実行され、別インスタンスとなる訳で、そうなると、元のexeのインスタンスは終了するので、また、バッチに制御が戻ります。他にも意図的にタイマー割込み処理を起動する
とか、そう、「Ed.exe」初期化の「CEdApp::InitInstance」で、最後に「BOOL」値として「FALSE」を返却すると、インスタンスが終了します。逆に、「CWnd::RunModalLoop」すると、別のタイマー割込み処理などで「CWnd::EndModalLoop」する迄は、次に制御が進まなくなります。だから、色々な制御が可能です。そうした場合、後から起動したコマンドの実行インスタンスが出来て、それらが、全く同じファイルに、同時にアクセスし、競合する事が有ります。
 そんな場合、エラー停止して、MSの「情報を送りますか?」などのメッセージが出ますが、そうならないよう、適当に「待ち(pause)」を追加したり、手動で操作する為「エクスプローラ」を起動したりし、手動操作が入り、運用が面倒になります。
 これもMyアプリの運用上の都合ですが、ドライブ[C]にある「日経平均株価.csv」を、もう1つの、ドライブ[E]にある「日経平均株価.csv」に、コピー上書きし、そのタイムスタンプが、ちゃんと更新されたか、確認する場面が有って、運用が煩わしいので、単純なコマンドを2つ、追加しました。
 「/Cmd(161)」と「/Cmd(162)」です。
 前者は、指定したパスが存在するかどうかを判定し、無ければそれなりのメッセージを出して停止し、その判定結果を、バッチから利用出来るよう、必要に応じ、「SkipFile.flg」を生成するコマンドです。
 後者は、ドライブ[C]の「日経平均株価.csv」とドライブ[E]の「日経平均株価.csv」の、存在有無を判定し、それぞれのタイムスタンプを表示して、コピー前と、コピー後の、確認が出来るようにするコマンドです。
返信
K
KoYamaさん (8o4hkr6m)2023/6/14 03:40 (No.62903)削除
0068.フローと開発コード。
 前にも投稿しましたが、ほとんど毎日、自動処理で「Edコマンドリスト.csv、Edパス右機能.csv、Option_一覧.csv、機能一覧.csv、起動オプションid対応表.csv、起動オプション一覧.csv、呼出元関数一覧.csv、呼出元関数一覧_未分類.csv、アクセラレータ一覧.csv、クラスとヘッダ対応表.csv、メッセージマップ一覧.csv」を、生成しています。
 それらを、利用して、これまた、1機能追加する毎に、それなりのタイトルを付けて、フローを作成しています。作成すると言っても、実は、「クラス名::関数名」を範囲指定し、得意のコマンド「Alt+F8」で、プロジェクトとインプリメント・ファイルを特定し、Openして、「クラス名::関数名」をタグサーチして、ソース・コードが開けるようにしてあり、さらに、「クラス名::関数名、」として読点を付加し、「Alt+F8」で、その関数が呼び出す先の「クラス名::関数名」を、PopUpメニュー
から、一段右へ、選択貼付け出来るように作成してあり、さらに、「クラス名::関数名」の行を複数範囲指定し「Alt+7」で、その各行の後半に、「//」から始まる、コメント(実は機能概要)を、貼付ける機能が組込んであるので、割合簡単に、作成できるのです。
 当然、それらフローには、カテゴリー別のショートカットが用意してあり、例によっての、サーチOpenサーチ機能が、「F9」で組込んであるので、何か文言を範囲指定し「F9」で、候補のフローが、これもやはり、PopUpメニューが開いて、選択Open出来るのです。
返信
K
KoYamaさん (8o4hkr6m)2023/6/10 03:54 (No.62412)削除
0067.EdコマンドとPopUpメニュー。
 これも勝手に「Edコマンド」と呼んでいる、バッチから使えて、かつ、追加実装のし易い、「/Cmd(nnn)」なる起動オプションで使える、コマンドが有ります。
 実装がし易いとは、当Myアプリが、主に「Ed.exe、EdUtil.dll、EdZan.exe、EdCsv.dll、EdSave.dll、EdCom.dll、EdData.dll」からなり、このうち「EdCsv.dll、EdSave.dll」以外は、ライブラリとして静的にリンクして実装している為、例えば「Ed.exe」のある関数から、「EdUtil.dll」のある関数を呼び出す場合、EdUtil.dll」に新規関数を追加し、ビルドして、出来たライブラリを、「Ed.exe」のプロジェクトにリリースし、「Ed.exe」に呼び出しコード実装してから、リビルドして、リスト・アップされたエラー表示の中に、リンク出来なかった「リンク・アドレス」が出力されるので、それを、再度「EdUtil.dll」の定義ファイルに記述追加し、再度リビルドし直して、出来たライブラリを、Ed.exe」のプロジェクトにリリースし直して、「Ed.exe」をリビルドする必要が有り、すごく実装しにくい訳で、この作業が、「/Cmd(nnn)」の引数が、先頭から順番に、「コマンド番号、パス1、パス2、パス3、、、」と決めてあり、インターフェースが変わらない限りは、必要無い、という事なのです。
 そして、前回のブログでも投稿した、「PopUpメニュー」の実装も、大分定式化出来て来て、
「21.ショートカット代替機能メニュー(Alt+Shift+F10)」に決まり、調子が良いので、これが、実は「/Cmd(160)」で実装してあるのです。
 つまり、「21.ショートカット代替機能メニュー(Alt+Shift+F10)」は、「/Cmd(160)」で実装してあり、そのPopUpメニュー項目が、今は、また少し追加してあり、「001.主要フォルダとKoYamaDB拡張、002.受信メール一覧、003.現在値と当日パス、004.献立4ファイル」となっていて、これからも、ショートカット代替機能メニューが、ひょこひょこと、追加出来る、と言う訳です。
 「Edコマンド」は、今迄に160個も、出来ているのです。随分作ったなあ、、、。
返信
K
KoYamaさん (8o4hkr6m)2023/6/8 04:16 (No.62193)削除
0066.フレームからショートカット実行。
 このMyアプリ「Ed.exe」を開いている時に、良く開くファイルを参照したくて、開く場合、何かと不都合が有り、つい、DeskTopのショートカットで、別exeを開いたりしますが、これも、編集作業の邪魔になる事が有り、開いたフレームから、DeskTopのショートカットが、内部コマンドとして起動出来ればと、「ショートカット代替・フレーム・メニュー・コマンド」を実装しました。3桁のコマンド番号で解るように実装しました。
 まず「001」番として、「親フレーム、4.ユーティリティ(&U)、5.特殊操作、24.便利コマンド」の直下に「21.主要フォルダKoYamaDB拡張を開く(Ctrl+Alt+F5)」として、実装しました。
 「主要フォルダ.txt」と「KoYamaDB拡張.txt」を左右に解りやすく開き、後者の方は、当日編集中の段落を初期サーチします。
 そして、もっと簡単操作で開けるように、「Alt+Shift+F10」で、フレーム左上にPopUpメニューを出し、これから選択した機能を、実行するようにしました。都合により、アクセラレータは、変更しました。
 今のところ、PopUpメニューは「001.主要フォルダとKoYamaDB拡張」「002.受信メール一覧」だけです。それでも、研究発表Textを編集中に、すぐ、この2つが開けると便利で、今も、見ながら、編集しています。
返信
K
KoYamaさん (8o4hkr6m)2023/6/4 04:08 (No.61788)削除
0065.どこでも「PopUp」。
 実装しました。Debugも終わりました。
 アイデアとは、「/Mnu2」起動時に呼出したコマンドを、「Text子フレーム」からも「親フレーム」からも、「Ctrl+Alt+F7」で実行出来るようにするものでした。
 これで、クィックランチャーから「/Mnu2」起動する時だけでなく、その後別の研究発表Textを、追加で開く時も、全く「空」の「親フレーム」からでも、2段PopUpメニューから、開く事が、出来るようになりました。
 それで、この、前回ブログからの内容は、「研究発表一覧.csv」「カテゴリー分類.csv」「機能分類.csv」「現在設計.ini」の関係性と構造を同じにすれば、別のフォルダ別ファイルでも使えるコマンド類で、とても用途が増えた事になるのです。
 勿論、、、少し頑張って、、「Ctrl+Alt+F6」での「分類メニュー切替」も、同じように、出来るようになりました。
 ついでに、お蔭様で、また別のアイデアが浮かびました。今度は、ちょっと手間取る構想なので、すぐには、実装出来そうもありません。では、では。
返信
K
KoYamaさん (8o4hkr6m)2023/6/3 04:24 (No.61701)削除
0064.起動オプション「Mnu2」。
 ショートカット「C:\Data\TopMenu\2.Ed起動など\4.研究発表.lnk」を追加作成しました。そのショートカットのプロパティは「C:\Utl\EdZ\Ed.exe /Mnu2 E:\Data\各種\研究発表\現在設定.ini」で、起動オプション「/Mnu2」を、追加組込みしました。
 これは、前回のブログで上げた「機能分類.csv」と「現在設定.ini」、それに、既に対応済みの「研究発表一覧.csv」「カテゴリー分類.csv」とも関連し、そう「現在設定.ini」の設定により、「カテゴリー分類.csv」または「機能分類.csv」からの2段PopUpメニューを、空の親フレーム左上に、起動し、選択指定した研究発表Textを、Text子フレームとして開く、ショートカットです。
 「現在設定.ini」には、「一覧 = 研究発表一覧.csv」なる1行を追加しました。
 それで、組込んだコードは、元の「CMenuOpe::CsvPopUpMenu」から、新しく組込んだコード
「CEdCommon::OpenOrExec」を呼び出すようにした点が、主な要点です。そして、この中の
「CEdCommon::GetListPathFmIni」では、「現在設定.ini」のフル・パスを元に、「研究発表一覧.csv」などのフル・パスを取得し返します。
 当然、起動オプション「/Mnu2」を受付けるようにしたり、csvファイルを開いていないので、一時的に、「EdCsv.dll」をLoadして利用したり、新設関数から、前回のブログ迄に、既に組込んであって関数「CEdCommon::OpenReSearchFil」を呼び出したりは、していますが。
 それで、ついでに、次回のブログで投稿する予定の、新規追加機能のアイデアも浮かびました。実装し、Debugが完了したら投稿します。
返信
K
KoYamaさん (8o4hkr6m)2023/5/31 03:36 (No.61473)削除
0063.機能分類。
 「機能分類.csv」を新設しました。列の構成は「カテゴリー分類.csv」とほぼ同じで、2番目の列」が、「カテゴリー」では無く、「機能」です。当然「登録名一覧.csv」にも、登録しました。今のところ機能は「01、サーチOpenサーチ」「02、パスJump」「03、Excel編集モード」それと「04、PopUpメニュー」だけです。
 それで、同じところに「現在設定.ini」も新設し、セクション[分類設定]の下に、「設定」をキーに、現在設定キーを値として持つようにして、キー「01」で「カテゴリー分類」、キー「02」で「機能分類」を持たせました。
 それで、「研究発表一覧.csv」「カテゴリー分類.csv」「機能分類.csv」のいずれかを開いた状態から、「Ctrl+Alt+F6」で、「現在設定.ini」の内容を、PopUpメニューから、選択切替出来るように、機能を追加組込みしました。
 これで、研究発表のTextを、「カテゴリー分類.csv」「機能分類.csv」のどちらからでも、メニューでネストして、開けるようになりました。
 当然、全く別の分類で同様のフォーマットで、csvファイルを用意し、「現在設定.ini」に、同様に、キー「03」でその名前を追加すれば、その分類csvファイルからでも、開ける訳です。 今のところ、その別分類は、思い付いていませんが。
返信
K
KoYamaさん (8o4hkr6m)2023/5/27 02:42 (No.61040)削除
0062.Excel編集モード。
 csvファイルは、通常、起動オプションを何も付けずに開くと、「Excel編集モード」で開きます。
 この場合、いずれかのセルを、左クリックすると、セルカーソルが現れ、セルカーソル編集モードに、なります。そして、上下左右の矢印で、セルカーソルが、上下左右へ移動し、「Shift」キーを押しながら行うと、セルカーソルが下右へ拡大したり、左上へ縮小したりします。その上で、「Ctrl+C」や「Ctrl+X」で、コピーやカット、「Ctrl+V」でペーストされます。つまり、セルカーソル内一式での、コピペが、出来ます。
 勿論、別のcsv子フレームへも、Excel編集モードであれば、コピペ出来ます。
 もし、別のText子フレームへ、貼付けた場合は、セルカーソル内だけの、csvファイル文字列、つまりは、各項目をカンマ区切りでつないだ文字列として、貼付きます。
 セルカーソル編集モードは、「ESC」キーで、解除出来ます。
 それから、セルカーソル編集モードで、単一セルで「F2」を押すと、そのセル内の文字列が、編集出来ます。これは、「CEdit」クラスを貼付けて、動作させているだけなので、通常のコピペも出来る編集モードと、なっています。単一セル編集モードも、「ESC」キーで解除出来ます。
 編集後は、「1.ファイル(F)」から「05.上書き保存(S)」で、上書き保存(ファイル更新)出来ます。勿論、「1.ファイル(F)」から「06.名前を付けて保存(A)」すれば、別の新しいcsvファイルとしても、保存出来ます。
返信