本文是电脑编程入门自学示例源码,但仍然希望读者能了解计算机内存的知识.在之前的string.concat()拼接字符串示例中,参数全部是字符串,返回的是拼接后所有的字符.在这个例子中,参数1是指定了长度的内存缓冲区,所以返回的是内存缓冲区里它的长度能装下的内容.就好像你指定了一个特定大小的箱子来装两包金条,箱子空间不够,则只能按顺序装前面一部分,剩下的没能取回.源码如下:
import win.ui;
import console;
/*DSG{{*/
var winform = win.form(text="简码编程 jianma123.com";right=311;bottom=198)
winform.add(
button={cls="button";text="单字节字符-拼接到内存缓冲区";left=54;top=101;right=261;bottom=133;z=2};
button2={cls="button";text="多字节字符-拼接到内存缓冲区";left=54;top=139;right=261;bottom=171;z=4};
edit={cls="edit";text="123456";left=16;top=16;right=296;bottom=48;edge=1;multiline=1;z=1};
edit2={cls="edit";text="abcdefg";left=16;top=55;right=296;bottom=87;edge=1;multiline=1;z=3}
)
/*}}*/
winform.button.oncommand = function(id,event){
var str1 = winform.edit.text;
var str2 = winform.edit2.text;
var t = raw.buffer(10);//分配内存,指定大小,分配的内存是可读写的字节数组
console.varDump(string.concat(t,str1,str2));//输出拼接后的长度 数据类型:number 变量值:10
console.varDump(t);//输出 数据类型:buffer 变量值:123456abcd //10个字符,10个字节
//因为只创建了10个字节的内存空间,所以缓冲区只能装下拼接后的10个字节
}
winform.button2.oncommand = function(id,event){
var str1 = "中国";
var str2 = "123456";
var t = raw.buffer(10);//分配内存,指定大小,分配的内存是可读写的字节数组
console.varDump(string.concat(t,str1,str2));//输出拼接后的长度 数据类型:number 变量值:10
console.varDump(t);//输出 数据类型:buffer 变量值:中国1234 //6个字符,10个字节
//因为只创建了10个字节的内存空间,所以缓冲区只能装下拼接后的10个字节,一个汉字占3个字节
}
winform.show()
win.loopMessage();