system.lua
NSExec("luasub sample")
function NSCOM_sample()
local str = ""
for i=48, 57 do
if i==55 then str = str .. string.char(0) end
str = str .. string.char(i)
end
NSOkBox(str, tostring(str:len()))
NSSetStrValue(0, str)
local s2 = NSGetStrValue(0)
NSOkBox(s2, tostring(s2:len()))
end
00.txt
*start
sample
end
*define
deletemenu
game
何が言いたいか。
文字コード0の扱いについて。
Lua側の文字列変数は、途中で'\0'があってもそれを含めて文字列であると判断する。
しかし、その'\0'を含む文字列を、NScripterの文字列変数に代入すると、それが吹っ飛び、さらにはそこが文字列終端として認識されてしまう。
いやまあ、NScritperの文字列変数が、C言語系で言うchar[4096]をラッピングしたものであることはその筋では有名な話だよね多分。で、終端に'\0'を使うのはセオリーと言うか歴史なのでどうしようもないと言うか、うん。