「
Mery.iniのオプション値を取得
」を編集中
2019年3月10日 (日) 02:10時点における
Sukemaru
(
トーク
|
投稿記録
)
による版
(
→
メモ
)
(
差分
)
← 古い版
|
最新版
(
差分
) |
新しい版 →
(
差分
)
ナビゲーションに移動
検索に移動
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
== GetIniOption() 関数 == Mery.ini ファイル内の各行<br> '''''OptionName=value''''' <br> の「項目名」の文字列を指定して「値」を取得するための '''組み込み用関数''' です。<br> [[includeライブラリ]] の [[includeライブラリ#MeryInfo.js|MeryInfo.js]] とは異なり、Mery.ini の任意の項目名(左辺)で検索をかけて、生の値(右辺)をそのまま取得します。 : [[#関数本体|組み込み関数本体]] を任意のマクロのソースコード内にペーストして使用します。 : 使い方は [[#使い方|使用例]] を参考にしてください。 * '''このマクロは Mery.ini の内容を編集(書き換え)するものではありません。 * 基本的に Mery.ini は[[ヘルプ:ツール#オプション|オプション]]設定パネルを [OK] で閉じたときと Mery を終了したときにしか更新されず、標準メニューバー、ツールバーアイコン、右クリックメニュー、ショートカットキー、マクロ等でエディタの設定状態を変更しているばあい、INI の内容が最新の状態とはなりません。 <br> → かならずしもエディタの表示状態どおりの値を取得できるわけではない。 よって MeryInfo.js にはない項目として「行の表示方法」の取得ぐらいしか使い道がない… * Mery.ini の直接編集でオプションパネルから設定変更できない「'''隠し機能'''」項目をカスタマイズしている人なら、現在の設定値の確認などにも使えるかも? === ソースコード === // #title="Mery.ini のオプション値を取得" /** * 組み込み関数 '''GetIniOption( array )''' * 引数で指定した'''任意の''' INI オプション項目の値を返す * * ※ 引数は INI オプション項目名を列挙した配列 ''[ "HogeHoge", "FugaFuga", "PiyoPiyo" ]'' を指定すること。 * → 戻り値も INI オプション項目の値を並べた配列。(核要素は数値または文字列) * */ <div id="関数本体"> </div> <source lang="javascript"> // ---------- 組み込み関数 ▼ ココから ▼ ---------- function GetIniOption( array ) { // var start = new Date(); var Fso = new ActiveXObject( "Scripting.FileSystemObject" ); // Mery.ini を探す var iniPath = editor.FullName.replace( /\.exe$/i , ".ini" ); if ( ! Fso.FileExists( iniPath ) ) { var WshShell = new ActiveXObject( "WScript.Shell" ); iniPath = WshShell.ExpandEnvironmentStrings( "%APPDATA%\\Mery\\Mery.ini" ); } // Mery.ini を読み込む var iniFile = Fso.OpenTextFile( iniPath, 1 ); var iniText = iniFile.ReadAll(); // 引数の配列をループ処理してオプションの値を取得する for ( var i = 0, dist = []; i < array.length; i ++ ) { var value = iniText.match( new RegExp( "^" + array[i] + "=.*$" , "igm" ) ) .shift() .replace( /^.*?=(.*)/ , "$1" ) .replace( /[\r\n]*/g , "" ); if ( value.match( /^[\-0-9]+$/ ) ) { value = Number( value ) } dist.push( value ); } iniFile.Close(); // Status = ( ( new Date() - start ) /1000 ) +"秒"; return dist; } // ---------- 組み込み関数 ▲ ココまで ▲ ---------- </source> === 使い方 === <source lang="javascript"> /** * 【使い方】 * * GetIniOptions() 関数の使用は1回で済ませないと * その都度 INI ファイルの読み込みが発生し処理速度が落ちるので * 取得したい項目すべてをひとつの配列にまとめること * * ※ INI のオプション項目名の記述を間違えるとエラーになる */ // ① 取得したい INI オプション項目を ["配列"] に列挙する var iniItem = [ "LineColumnView", "WrapMode", "QuoteCharacter", "TabColumns", "AutoIndent" ]; // または var iniItem = new Array( "LineColumnView", "WrapMode", "QuoteCharacter", "TabColumns", "AutoIndent" ); // ② GetIniOption() 関数の引数に配列を指定する (※返り値も配列) var iniValue = GetIniOption( iniItem ); // ③-1. (例)取得したオプションをダイアログで順々に表示する for ( var i = 0; i < iniItem.length; i ++ ) { Alert( iniItem[i] + " = " + iniValue[i] ); } // ③-2. (例)個々の値は戻り値の配列のインデックス番号で要素を指定する var settings = { lineColumnView: iniValue[0], wrapMode: iniValue[1], quoteCharacter: iniValue[2], tabColumns: iniValue[3], autoIndent: iniValue[4] }; Alert( "行の表示方法: " + ( settings.lineColumnView == 1 ? "表示行" : "論理行" ) ); // ③-3. (注)取得したいオプション項目がひとつだけの場合も、["配列"] のかたちで記述すること Alert( GetIniOption( ["LineColumnView"] ) ); </source> === メモ === * 2019/03/10 sukemaru : 将来的に、INI を最新の状態に強制更新したり INI の設定項目を取得できる専用メソッドが実装されるかもしれませんし、現状でも [[includeライブラリ]](MeryInfo.js)でもある程度 INI へのアクセスはできますが…。 <br> (また、[[includeライブラリ]](IO.js)の使用のみでエディタの表示状態を変更するマクロの例として「[[折り返しトグル切り替え]]」などもあります。) <br> ※ INI アクセスの専用メソッドについては[https://www.haijin-boys.com/discussions フォーラム]内の「[https://www.haijin-boys.com/discussions/4081 マクロコマンドから「表示」の「色の反転」を取得したい]」のトピック内で検討・議論されていますので、ご参考まで。
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
スポンサーリンク
ナビゲーション メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク