2015.04.01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

MHI 5.0

この「にっき」には暴力シーンやグロテスクな表現が含まれています。

(2015.04.07) 0859

$ NYAOS-3000 から COM 拡張部分だけを切り出して、汎用の Lua ライブラリ化した

当初、LuaCOM を使えばよいかなと思っていたんだが、 どうも Lua 5.3 に対応しているバイナリがまだリリースされてないっぽいので。

名前は「Nihongo Yet another OLE for lua」、略して「nyole (にょーえるいー) 」とした。 尿意を連想した人は心が汚れている。

さて、NYAOS-3000 内蔵版とは少し違っていて、

  • Lua 5.3 専用
  • 独自の名前空間 nyaos ではなく、require の戻り値テーブルの中にメソッドが入っている
  • ANSI版の create_object と、UTF8版の create_object_utf8 とメソッドを分けている。

こんな感じに使う:

local ole = require('nyole')
local fsObj = assert(ole.create_object_utf8("Scripting.FileSystemObject"))
assert( fsObj )
-- CreateTextFile can make utf16-data, but can not make utf8-data. --
local fd = assert(fsObj:CreateTextFile(utf8.char(0x262D)..".txt",true,true))
if fd then
    -- print("WriteLine")
    fd:WriteLine("HOGEHOGE")
    fd:WriteLine(utf8.char(0x262D).."DATA")
    -- print("Close")
    fd:Close()
end

ここで気付いたのだが、「ファイル名」は最終的に UTF16 で渡すから、 Unicode独自文字は普通に使えるのだが、TextStream.WriteLine などは、 ANSI(現在のコードページ) or UNICODE(UTF16) なので、 UTF8 を渡すと Unicode 独自文字の時はスルーされるんだね。

パラメータの引き渡し自体は出来ているから、これは別に nyole.dll の責任じゃないな。

lua.exe (5.3) でのテストは一応 Ok だから、 そのうち nyagos.exe で試してみよう。

.net(3) C++(3) Cygwin(12) GAME(3) Groovy(1) Linux(2) Lua(39) Mercurial(13) NYAOS(92) OS/2(7) Oracle(3) Perl(4) Python(22) SKK(4) Windows8(1) album(68) ckw(10) coLinux(1) vim(6) wifky(27) 書評(21) (9)

zetamattaのたいじゅー