hmPyの基礎中の基礎のAPI
概要
秀丸マクロから呼び出すhmPyの関数(API)は多くありません。
ほとんどの場合は、「DoString」だけを使うこととなるでしょう。
Pythonファイルを別ファイルにした場合には、「DoFile」を使うことになるハズです。
-
命令の実行:
└ DoString(szexpression)文字列「szexpression」をIronPythonの命令として実行します。
何らかの明確な内部エラーがあった場合は0が、とりあえず実行できた場合は1が返ってきます。
-
1つのマクロ内で「DoString」は複数回実行可能、変数空間も同じ
#PY = loaddll( hidemarudir + @"\hmPy.dll" ); #_ = dllfuncw( #PY, "DoString", R"PY( aaa = "あいうお"; def mysum(a, b): return a + b )PY" ); #bbb = 123; #_ = dllfuncw( #PY, "DoString", R"PY( bbb = hm.Macro.Var['#bbb'] ccc = aaa + "続いている" # 別のDoStringでも、aaa は引き続き利用できる。 hm.Macro.Var['$ddd'] = ccc; hm.debuginfo( mysum(1,2) ); # 別のDoStringで定義した関数も当然利用できる。 )PY" ); message($ddd); freedll( #PY );
-
-
命令の実行:
└ DoFile(filename)ファイル名「filename」内の記述内容全体をDoString(...)の引数に渡したものとして実行します。
何らかの明確な内部エラーがあった場合は0が、とりあえず実行できた場合は1が返ってきます。
-
1つのマクロ内で「DoFile」は複数回実行可能、変数空間も同じ
繰り返しになりますが、DoFileとは、「該当のファイルの中身をそのままDoStringに渡す」ということですので、
複数個のファイルを利用することが可能です。
この際は、変数名の衝突などに注意してください。
-
-
.pyファイルの文字コードの変更など:
└ SetCodePage(codepage)「.py」ファイルは、「cp932(≒sjis)」「utf8(BOM有)」「utf16(BOM有)」のいずれかが想定されています。
それ以外で取り扱いたい場合、「SetCodePage」関数を利用してください。
この関数は「読み込み対象のファイル」が、該当のコードで記述してある、 という指定となります。-
秀丸マクロ側の記述
例えば、以下のようにすることで、
- 読み込み対象の.pyファイルはutf8で記述してあるということになります。
- 932:ShiftJIS(=cp932), 1200(utf16), 65001(utf8)となります。
基本的にまともに取り扱うことが出来る文字コードには、必ず「コードページ」が割り振られているため、あらゆるものに対応できます。
#PY = loaddll( hidemarudir + @"\hmPy.dll" ); // 読み込み対象のファイルである「.pyファイル」は指定のコードページで書かれてます(65001=UTF8)ですよ、という指定 #_ = dllfuncw(#PY, "SetCodePage", 65001 ); #_ = dllfuncw(#PY, "DoFile", currentmacrodirectory + @"\test.py" ); freedll(#PY);
-
IronPython側の記述
-