V8.66β4No.09059
秀丸担当 さん 16/09/06 11:14
 

V8.66β4を公開しました。

以下のページの「先行開発バージョンはこちら」からダウンロードできます。
http://hide.maruo.co.jp/software/hidemaru.html

32bit版:
http://hide.maruo.co.jp/software/bin/hm866b4_signed.exe

64bit版:
http://hide.maruo.co.jp/software/bin/hm866b4_x64_signed.exe

[ ]
RE:09059 DllDetachFunc_After_Hm866 動いNo.09060
天翔記.jp さん 16/09/07 12:54
 
DllDetachFunc_After_Hm866 動作確認できました。

ネイティブはもちろんのこと、
hmRbに組み込んでみて、
ネイティブ⇒マネージド⇒違うスクリプト環境空間⇒マネージド⇒ネイティブ⇒ で
うまく動いています。


今はまだ真価に気づく人は少ないかもしれないですが、
export関数のインターフェイスだけ(ネイティブインターフェイスと合わせるため)C++、
中身は99%C#(VC++はC#をスタティックリンクすら出来るので)とかも普通に横行して
くると思いますので、
この仕組みは将来的には結構重宝されると思います。





[ ]
RE:09060 DllDetachFunc_After_Hm866 動いNo.09061
秀丸担当 さん 16/09/07 15:17
 

ご確認ありがとうございます。
問題なければこういう仕様ということにしようと思います。

[ ]
RE:09059 Hidemaru_GetLineTextUnicode のNo.09062
天翔記.jp さん 16/09/08 16:06
 
問題なく動いているようです。

「0行目」を指定すると「1行目」を指定したことと同じなので、
そこだけユニークな挙動ですが、
同じ行がペロペロっと出ることで、
「おや? 1オリジンかな?」と逆に気づくきっかけになるので、
これはこれで悪くはないと思います。

#include <windows.h>

HMODULE hHM = GetModuleHandle(NULL);
HGLOBAL(WINAPI *GetLineTextUnicode)(int nLineNo) = (decltype(GetLineTextUnic
ode))GetProcAddress(hHM, "Hidemaru_GetLineTextUnicode");

extern "C" __declspec(dllexport) int test() {

 int nLineNo = 1; // マクロのlineno相当指定なので、1始まり
 while (TRUE) {
  HGLOBAL hGlobal = GetLineTextUnicode(nLineNo);
  if (!hGlobal) {
   break;
  }
  wchar_t* pwsz = (wchar_t*)GlobalLock(hGlobal);
  OutputDebugString(pwsz);

  GlobalUnlock(hGlobal);
  GlobalFree(hGlobal);
  nLineNo++;
 }
 OutputDebugString(L"\n");

 return 1;
}

[ ]
RE:09062 Hidemaru_GetLineTextUnicode のNo.09063
秀丸担当 さん 16/09/08 17:07
 

ご確認ありがとうございます。
行番号は確かに1からです。
0は意味ありませんでした。
このままでもいいとのことですが、やっぱり変なので0もNULLを返すようにしよ
うと思います。

[ ]
RE:09059 文字列リテラルを閉じてなくともNo.09064
天翔記.jp さん 16/09/09 17:33
 
例えば、マクロで

---------------------------------------
$a = "
---------------------------------------


だけで、終わっている
@ダブルクォーテーションを閉じていないし、
場合に、特にエラーが出ないようです。

普段はそれほど問題がないのですが、
例のR""などが新規に実装として入ったため、

---------------------------------------
$a = R"(

";

message("OK");
---------------------------------------
などがうんともすんとも言わないので閉じていないことを認知しにくいように思えま
す。

特になどは、( )の対応が抜けているということに(エラーメッセージがないと)気づ
きにくいと思います。

---------------------------------------
$a = dllfuncstr(#dll, "fun", R"(

");
---------------------------------------

なお、これは、R""系実装より前のバージョンでも


---------------------------------------
$a = "
---------------------------------------
は特にエラーが出ないようです。
少なくとも8.54でも同様であることが確認できました。

[ ]
RE:09064 文字列リテラルを閉じてなくともNo.09068
秀丸担当 さん 16/09/12 10:04
 

確かに文字列を閉じていない場合はエラーにならないです。
エラーになったほうがいいと思います。
今まで、従来の""で閉じないままのマクロで動いてしまっているものもあるかも
しれないので、そこは慎重に考えたいと思います。
少なくともR"()"と@""についてはエラーになるように修正します。

[ ]