国内常见的博客网站阿里云域名申请
入门
安装目录下Sec.exe为ide.Sc为编译器.
.sec为单文件二进制源码结构,.SEC和.极为多文件文本结构,命令行:cmd Sc.exe 源码路径.
基础
整数变量也可以是万能指针,传送参数,参数只有整数和小数两种.
可在名称前面加@或&符号取变量或函数名指针地址,文本变量只取地址不用加.
变量
在小程序片段之内的变量是局部变量,之外是全局变量.作用主要是用来存取数据,传递参数,算法运算等等.
局部变量只有整数,小数,浮点和文本这四种类型,变量类型间可使用等号相互转换,语法:变量一=变量二,把右边变量类型转换成左边变量类型数据.
转换文本时可以拼接.转换数值时可以用表达式.
变量类型
变量类型:整数,小数,浮点和文本,布尔,字符,字节,整形,正整形,整数,小数,文本,浮点,日期,大数,类型,数据表
十六进制数字,用$或者0x表示,$0到$FFFFFFFF.
转义字符略.可以用\把单个文字转换为编码值.
整数 时间=0@2018-8-15 12:00;
整数 提示="提示消息";
文本 内容(16)="$374727774367008C7A";
内容="最终结果:" + 数值 ".总共" + 次数 "次"
查字符(str,\s);
$时,16=>2进制
如下,细节见说明书.
运算符号和标点符号:+-*/|^&%?++--!=!=<><>>=<=>><<||&&?@._"$::#\''///**/$0x0#0$0@()[]{}
指针操作:@~[][]%[]&反引反引%反引&()()%()&%&()$()!()###@#()#[]##_[]_[]%_[]&_[]$_[]!_[]#.().%.&.$.!.#.+.++<>
语法:程序段/结束/子类/数据表/读取表/检索/加数组/清零/调用/新建/对象/创建对象/控件对象/导入/引入/重命名/常量/类型/导出/返回/如果/如果是/否则/判断/循环/循环在/循环于/循环数组/跳到/跳转/跳出/支持库/局部/保留/重置/销毁/置入/指令/传址/字节组/输出文件/列举/别名/程序版本/程序类型/程序资源/程序图标.
语法示例
小程序(整数 a,文本b,字节 c);
子类{整数 变量1,变量2;小程序 登陆(账号)...结束;}数据表{整数 a,文本 b[16],字节 c;}自定义表头结构
读取表(数据库名,数据表头,[长度]);
检索(变量名,查询值,[长度]);
加数组(变量名,表名,[字段名]);
清零(变量名,长度,[设定值]);
调用 变量名(参数...);//动态调用dll.
角色=新建 玩家类(等级=1,性别=0);
对象 名称=对象名;
名称=创建对象 "WinHttp.WinHttpRequest.5.1"
对象名=控件对象 窗口名;控件对象 对象名,窗口名.
导入 StrStrI 支持库 "SHELL32.DLL",2;//有2个参数的函数
引入 "Windows.inc";
重命名 发送消息=SendMessage;//转换英文为中文.
常量 内容="SEC";
类型 Form{整数 hwnd;整数 WndProc;}
返回(N1* N2);
如果(消息=窗口关闭){停止(0);}
a =如果是(消息=0)10,500;
否则{返回(1);}
判断(消息)为 窗口关闭{停止(0);}
循环(10){...}
循环{...i--;}i=0停止;循环{...i+2;}(i=100)
循环在(a<1000){a++;}
For(i=0;i<100;i++){i从0到99,每次加1,循环一百次}
循环数组(ab){}
开头: .... 跳到 开头;
起点@ .... 跳转>起点;
整数 数组();重置 数组(20); 保留 数组(200);
整数 数组(); 重置 数组(200);
销毁 数组;
置入[字节 $68]; 置入[整数 $20];//相当于写机器语言
指令[6820088800];//连续的十六进制机器码
传址[$4001200,a];//写入指定内存位置
字节组 tmp[15,$20,60,128];
输出文件=exe//改扩展名.
列举 form{.s=1;.l=5;}//==form.s=1;form.l=5;
导入 信息框 别名 MessageBoxA lib "USER32.DLL",4;
程序类型 34//32+2.就是32位的控制台.
程序资源 10,"sec.jpg"//资源类型与文件名.
程序图标"sec.ico";
置入功能
置入指令类似于汇编的DB/DW等,是在代码段插入指令数据.
置入[字节 15,20,40];
置入[整数 66,$204068AA];
置入[整形 $2040,88];
置入[小数 3.14];
置入[文本 "你好"];
置入[文本 50];
置入[地址 窗体];
置入[局部 参数];
置入[调用 加法];
置入[函数 信息框];
置入[@ 加法];
跳转略.
数据表
直接读取数据到指定结构.
读取数据表是为批量读取数据库而设计的功能,可以自定义数据结构,然后无需使用ADO等对象,直接把数据读取到相应结构内存中.
只要把需要字段数据读取出来,还可直接改变数据类型.如数据库中字段类型为整数,程序需要把整数类型数据全部转换成小数类型.
同样的数值15,整数和单精度小数都占四字节,但是它们的数据却大不相同.程序定义为小数,数据库里是整数,就可以全部提取为小数数据.
读取后的数据表读写方法为:表名(行号).字段名,如:
lv=玩家表(0).等级;玩家表(3).职业=5;
表名.rows为行数,表名.cols为列数.
长(表名)获取类型结构或每一行的数据长度,表名.len是申请的数组长度,使用前需要重置 表名(数量).
申请长度数量要>=查询表的记录数,读取完数据之后,表名.rows为实际读取记录数.
数据表的序号是从0开始,100行记录就是按序号0-99获取.读取数据是一段连续存放内存,行列是连续整齐排列的.
文本,数组,指针操作
文本是一段文字数据,数组是按数据类型连续排列数据,内存指针是内存中某个数据的位置.
它们都是用一个整数地址来表示所在位置,操作类似.
整数 s="sdkfskd";
s(0)=\b;整数 m;//内存地址
m(13)=128;//13处写入.
a=m(10);//读取
m(13)%=32128;a=m(2)%;//读取写入2字节,用%
m(13)&=$AF32C128;如果(m(2)&=889654){};
//读取写入4字节,用&
读写内存地址
可用变量读写内存地址
变量只能是字节,整形,整数,小数等4字节以内的数字类型.
如 文本 a="$32A4B8C6428B";字节 b;正整形 i;
b b>a+2;//就把a的第三位置`0xB8`,换成了`50`
文本 内容[64]="0123456789ABCDEF中华人民共和国";
整数 数值=内容
//数值得到数据`缓冲区`内存地址
数值=内容(0)
//从数据缓冲区读取第一字节数值,0这个字
数值=内容%
//从数据缓冲区读取两字节数据到数值变量,01这两个字
数值=内容&
//从缓冲区读取四字节数据,0123这四个字,(0)可以不写
数值=内容(2)
//从缓冲区的2字节后读取一字节数据,2这个字
数值=内容(2)%
//从缓冲区的2字节后读取两字节数据,23这两个字
数值=内容(2)&
//从缓冲区的2字节后读取四字节数据,2345这四个字
内容% =数值
//向缓冲区写入两字节数值,01被修改
内容& =数值
//向缓冲区写入四字节数值,0123被修改
内容(2)% =数值
//向缓冲区的2字节后写入两字节数值,23被修改
内容(2)& =数值
//向缓冲区的2字节后写入四字节数值,2345被修改
数值=#4
//#4是指针之后偏移4字节,就是读取4567这四个字
数值=#(4)
//#(4)是指针之后偏移4字节,小括号就是读取4这一个字
数值=#[4]
//#[4]是指针之后偏移4字节,中括号就是读取45这两个字
数值=#@4
//#@4是指针之后偏移4字节,就是4这个字的位置(取文本)
数值=##4
//#4是指针之后偏移4字节,就是读取456789AB这8个字(取浮点数)
.#6=数值
//#6是指针之后偏移6字节的浮点数,就是6789ABCD这八个字
.(6)=数值
//6是指针之后偏移6字节,读写操作6这个字
.%6=数值
//6是指针之后偏移6字节,读写操作67这两个字
.&6=数值
//6是指针之后偏移6字节,读写操作6789这四个字
.!6=数值
//6是指针之后偏移6字节,读写操作6789这四个字的小数值
记住指针位置,是变量缓冲区内最后读写操作的内存偏移位置.
还有中括号和~符号的指针操作,只记变量指针位置,不包括操作的偏移位置.
小括号可以读写操作整数,文本,数组,结构体和数据表等,中括号只能读整数和文本指针.
文本 内容[64]="0123456789ABCDEF中华人民共和国";
整数 数值=~内容
//数值得到数据缓冲区的前四字节数据,0123
数值=内容[0]
//从数据缓冲区读取第一字节数值,0这个字
数值=内容[2]
//从缓冲区的2字节后读取一字节数据,2这个字
数值=内容[2]%
//从缓冲区的2字节后读取两字节数据,23这两个字
数值=内容[2]&
//从缓冲区的2字节后读取四字节数据,2345这四个字
数值=`[4]
//`[4]是内容缓冲区向后4字节,就是读取4这个字
数值=`[4]%
//内容缓冲区向后4字节,百分号就是读取45这两个字
数值=`[4]&
//内容缓冲区向后4字节,连接号就是读取4567这四个字
数组和数据表包含子类名和方法
方法 | 意思 |
|---|---|
数组.指针 | 数据缓冲区指针 |
数组.长度 | 成员数量或文本缓冲区大小 |
子类.长度 | 空间长度 |
数组.维数 | 第一维数组的长度 |
对象.类 | 关联的类 |
对象.标识 | IID标识 |
数据表.指针 | 数据缓冲区的指针 |
数据表.长度 | 可存储行数 |
数据表.行数 | 已读取数据的行数 |
数据表.列数 | 每行数据的列数 |
读取表 | 读取数据到数组缓冲区 |
加数组 | 把某列数据加到一维数组 |
数组
数组,数据表和结构体都属于全局变量,数组可以是静态和动态两种
静态数组如:
整数 一(10);字节 二(5);
动态数组括号内为空,如整形().
结构体类型只支持是静态数组,静态数组不支持重置,保留和销毁.
数据表只支持动态数组,申请的数据是清零的,支持重置,保留和销毁.
子类
子类要通过"新建"申请内存才能使用,数据不清零,只支持销毁.
子类和对象支持全局和局部变量,实体是一个整数指针变量.
子类代码需要单独一个模块文件来写,格式为:子类 名称{...}.
子类支持的变量类型:布尔/字符/字节/整形/正整形/整数/小数/浮点/大数/文本.
子类变量均可使用数组,下标长度必须是数字,不支持动态数组.
子类变量时不能赋值,未新建子类时变量的数据并不存在.
子类如果不包含变量,是不需要新建,不用申请内存空间
子类里面包括程序段,可直接使用子类内部的变量
子类书写完之后,以大括号}结尾,与命名子类后的{对应.
使用子类时先要新建子类,才可使用其变量和方法函数.
子类名 名称1 = 新建 子类名;
整数 名称2=新建 子类名
也可用赋值指向已存在的子类:
子类名 名称3=名称1;
子类变量用法:
整数 数一=名称1.变量名;
名称1.变量名=88;
传递参数时也可用子类:
程序段 测试(子类名 名称3)
名称3.变量=99;
变量9=名称3.读取(数据,4);
名称3.写入(内容)
销毁子类方法是:
销毁 名称2;
子类名和子类实体要区分清楚
COM对象
COM对象申请方法是:
对象 名称5=对象名;
对象 任务=任务栏类;
//用对象结构
//或下面代码形式
对象 任务($44F3FD566DFDD011958A006097C9A090,$42F3FD566DFDD011958A006097C9A090,接口,计数,释放,初始化,添加,删除,激活,活动)
极语言库里已有的COM对象结构在说明书里有使用方法.
如:任务栏类,链接类,存储类,可查看具体说明
申请完对象变量,要用创建对象去创建对象实体
语法是:
创建对象 任务;任务.初始化;任务.添加(窗口)
任务.删除(窗口);任务.激活(窗口),任务.活动(窗口)
对象不使用新建和销毁,释放对象写法是:
任务.释放;
全局变量和局部变量
在小程序段内申请的变量,包括提交的参数都是局部变量.
在子类或者数据表头内申请的变量属于子类变量.
在其它地方(小程序和子类外)申请的变量是全局变量.
全局变量包括字符,字节,整形,正整形,整数,正整数,小数,浮点,大数和自定义类型.
局部变量目前只有整数,小数和文本这三种.
在按参数传递任何变量时,均为4字节数字.
所以大于4字节的类型比如文本,浮点和自定义类型,提交的都是变量的地址,而不是值.否则是按值传递的.
因此小程序的参数通常只有整数和小数这两种,文本提交过来也是个整数地址.
小数是提交参数时,要直接进行小数运算时,才需要特别指定.除此外,任何提交参数都可写成整数类型.
子类本身并没有特别定义,它可以是全局整数变量,也可是局部整数,也可以是整数数组.
全局变量是编译程序时,提前在数据区段申请的.局部变量仅在小程序段内有效,属于临时存储空间.
子类和数据表的变量,是在运行程序后,动态申请的内存区块.使用子类前,要用新建 子类名称
数据表相当于自定义二维数组,使用前要先"重置"数组长度,该长度不能小于所读取数据的行数.
数据表可使用数组的重置,保留和销毁方法,而子类只可用新建和销毁这两个方法.
子类和数据表的区别
子类申请的内存区域并不是清零的,所以新建的时候,可以用:
玩家=新建 角色类(等级=1,职业=2,性别=1);
来设置子类变量的数值,未清零的内存数据是随机的,即在新建子类时子类变量的数值是不确定的.
而在重置长度后,数据表的内存区域是清零的,所有此时变量值都是0,数据表也可以用作自定义数组.
成员变量使用方法是:玩家表(0).性别,括号内是行号也就是数组的标号,是从0开始计数的.
子类变量的使用方法是:玩家.性别.如果申请的子类变量是数组形式,如:角色类 玩家()
也可以像数组一样,先
重置 玩家(1000),玩家(0)=新建 角色类;
玩家(0).性别=1;
但是销毁只能是先销毁一个成员,
销毁 玩家(0)
N=玩家(0);销毁 N;
在子类内部,可不加前缀直接访问子类变量,如:
等级=100;职业=3;xb=性别
等等.
全局变量,子类变量的名称是绝对不能重复的,重名就会优先判定为全局变量.
申请和使用局部变量
局部变量除文本外都是4字节,文本可以大于4字节,但必须是4的整数倍.
局部变量最多可申请1-2M空间,不使用局部变量则不申请,少量使用时(限120字节)
局部整数和小数变量30个以内,文本按申请的长度算.需要更多变量时,变量前加局部或local.
并且放在小程序开头第一行,编译时,才好预计此小程序段需要申请多大栈空间.如:
局部 文本 ss(32);
局部与全局变量区别是很大的,编程语法上尽量做到兼容使用,方便程序灵活处理.
局部和全局文本都可像操作数组一样,读写其中每一字节.如:
文本 s(16)="abc";s(2)=\d;
也可像其它变量一样,写入数字.如:
s=0;//清空文本
s=$31323334;
//`文本开头`等于4321
因为十六进制是反转的,最后的34写入字符的第一字节,对应文字是4,用s(1)读取出来就是52.
更多细节,见说明书!
