编程语法
编程代码里的文字部分,包括关键字和名称定义,都是用标点符号区分开的。
空格 制表符 回车换行 逗号 分号它们的作用类似整数 数一;小数 数二;
也可以写成 整数 数一 小数 数二 空格 制表符 回车换行 逗号 分号 括号这些都能把文字给区分开
分号通常用于这句代码结束时,也可以用空格 制表符 回车 换行等符号代替分号;
而关键字后面通常是自定义的名称,如:整数 数一 这是要申请一个整数变量,名字叫数一
一句代码的中间是用空格而不是加分号,所以空格 换行 制表符可以代替分号,分号却不能代替空格等
而逗号通常是要连续重复操作某件事时,比如 整数 数一,数二,数三,数四
这里是要连续申请四个整数变量,使用逗号可以不用每次都写整数
再比如调用函数时,发送消息(窗口,消息,参数,数据)
小括号里也是要连续提交多个变量,就用逗号隔开;括号都是成对出现,代表一个范围
程序段 窗体消息(窗口,消息,参数,数据) 判断(消息)为 窗口关闭{停止(0)} 为 单击左键{左键点击(参数)} 否则 处理窗口(窗口,消息,参数,数据) 结束
上面这段代码是一个程序段的示例, 程序段后面用空格,表示后面是要定义一个名称:窗体消息
后面是一对小括号,里面也是连续申请了四个接收参数,跟发送消息提交的四个参数一一对应
调用发送消息函数,把消息发给指定窗口,在窗体消息这里就能收到发过来的四个参数
窗体消息里第一行代码是判断消息为窗口关闭时停止程序运行,停止哪个程序?括号里写0,代表是本程序
这句话用平时说话的语句,就把所有关键词都写成一段文字了,编程代码是要把这些都区分开
判断后面加小括号就把判断两个字分开,括号里是要判断的对象,这里判断发来的消息是什么
如果消息为窗口关闭,后面是大括号,它表示可能有多句代码,会执行大括号里的这些代码
如果只有一句,大括号也可以省略,比如否则 处理窗口(窗口,消息,参数,数据) 就没写大括号
否则后面就要加个空格,不加的话,就是否则处理窗口,这六个字就不是已经定义的名称,编程器无法解读
最后的结束是这段代码结束了,结束后面可以加分号,但是结束后面一般都有换行,就不用加分号。
程序段的代码也可以用大括号,不用写结束两个字。还有参数默认值是在创建程序段的参数名后面加等号
程序段 加法计算(数一=10,数二=5) { 返回(数一 + 数二) }
判断语句只用写一次,第二行还是判断消息为单击左键的时候,执行左键点击这个函数
这个消息到来时,参数是控件的编号,数据是控件对象,窗口都是主窗口,设计多个主窗口时,可以根据哪个窗口去执行不同的操作
窗体的消息非常多,大部分都是交给处理窗口这个函数来处理,否则就是其它消息就执行这里代码
左键点击也判断提交过来的参数,判断编号是几就执行相应的功能函数,比如:按钮1点击;按钮2点击
也可以根据控件对象进行判断,此时第四个参数:数据是控件对象,判断它是哪个控件
为 单击左键{ 如果(数据=编辑框1)编辑事件(参数) 否则 左键点击(参数)}
鼠标点击编辑框,有可能是选中,也有可能是右键,也有可能是双击,使用如果语句比如数据和编辑框1
两者相等就执行编辑副本,否则就执行左键点击事件,这就是如果否则语句的代码写法
更多的语法请参照下表,后面的教程也有讲到更多的语法规范和代码用法
英文语法 | 中文语法 | 简单用法 |
if | 如果 | 如果(消息=窗口关闭){停止(0);} |
else | 否则 | 必须放在如果语句后面,否则{返回(1);} |
switch | 判断 | 判断(消息)为 窗口关闭{停止(0);} |
do | 循环 | 循环(10){...}10次停止;循环{...}无限循环;循环{...i+2}(i=100)到100停止;循环(i<100){...i++}小于100时循环 |
case | 为 | 判断语句后使用,默认判断条件是相等,可加比较符号,逗号多条件,n~m范围条件 |
sub | 程序段 | 程序段(整数 a,文本b,字节 c);编写一段程序代码 |
end | 结束 | 程序片断代码的末尾,加上此语句表示此段程序结束。可用大括号代替 |
sub | 小程序 | 小程序(整数 a,文本b,字节 c);编写一段程序代码 |
sub | 函数 | 函数(整数 a,文本b,字节 c);编写一段程序代码 |
export | 导出 | 编写一段程序代码,写法与程序段相同,用于写dll时,可被其它程序调用 |
import | 导入 | 导入 StrStrI 支持库 "SHELL32.DLL",2; 导入dll的函数,最后2是参数数量 |
include | 引入 | 引入 "lib\odbc32.lib"; 用于引用库文件 |
const | 常量 | 常量 只读打开=0; const IDYES = 6;用名称定义一个数值 |
return | 返回 | 返回结果给调用者,例如返回(N1* N2);小数结果加冒号,返回(:N1*2.5); |
scls | 子类 | 子类{整数 变量1,变量2;小程序 登陆(账号)...结束;} |
new | 新建 | 角色=新建 玩家类(等级=1,性别=0);用于新建子类,可选括号内设定初始值。 |
object | 对象 | 对象 名称=对象名;申请一个对象变量,结构是(类,标识,函数名..) |
crobj | 创建对象 | 创建一个对象的实例,创建对象 名称;名称=创建对象 "WinHttp.WinHttpRequest.5.1" |
ctobj | 控件对象 | 获取控件窗口对象的实例:对象名=控件对象 窗口名;控件对象 对象名,窗口名 |
datab | 数据表 | 数据表{整数 a,文本 b[16],字节 c;}自定义表头结构 |
query | 读取表 | 读取表(数据库名,数据表头,[长度]);按指定结构把数据表读取到内存中。 |
indexof | 检索 | 检索(变量名,查询值,[长度]);快速从数组或内存中检索数值,返回序号,未找到返回-1 |
addin | 加数组 | 加数组(变量名,表名,[字段名]);把表的字段值加入数组,用来检索 |
zeros | 清零 | 清零(变量名,长度,[设定值]);对数组或内存数据清零或者设定统一值 |
call | 调用 | 调用 变量名(参数...);获取链接库(dll)的某函数地址到变量中,动态调用执行 |
rename | 重命名 | 重命名 发送消息=SendMessage; 把英文函数换成中文使用 |
type | 类型 | 类型 Form{整数 hwnd;整数 WndProc;} |
iif | 如果是 | a =如果是(消息=0)10,500;相当于三态语句 |
while | 循环在 | 判断条件成立则循环,直到条件不成立. 循环在(a<1000){a++;} |
for | 循环于 | For(i=0;i<100;i++){i从0到99,每次加1,循环一百次} |
foreach | 循环数组 | 循环数组(ab){}可循环读或者写数组或特定数据段的值 |
Goto | 跳到 | ABC: ..... goto ABC; 开头: .... 跳到 开头; |
jump | 跳转 | 等于、大于、小于..时跳转到某处,如:起点@ .... 跳转>起点; |
break | 跳出 | 在循环内使用,可跳出循环 |
lib | 支持库 | import abort lib "MSVCRT.DLL",0; |
local | 局部 | 局部 整数 图片; 局部变量总长度大于120字节在第一行加这两个字 |
preserve | 保留 | 整数 数组();重置 数组(20); 保留 数组(200);会保留原来的20个 |
reserve | 重置 | 整数 数组(); 重置 数组(200);把数组重新分配200个,且数据清空 |
destroy | 销毁 | 销毁 数组; 把数组或子类销毁,释放内存。 |
direct | 置入 | 置入[字节 $68]; 置入[整数 $20];相当于写机器语言 |
order | 指令 | 指令[6820088800];连续的十六进制机器码 |
movads | 传址 | 传址[$4001200,a];可以把变量值或数值写入指定内存位置 |
bytes | 字节组 | 字节组 tmp[15,$20,60,128]; |
outfile | 输出文件 | 修改编译输出文件的扩展名。例如:输出文件=exe |
with | 列举 | 列举 form{.s=1;.l=5;}等效于form.s=1;form.l=5; |
alias | 别名 | 导入 信息框 别名 MessageBoxA lib "USER32.DLL",4; |
pever | 程序版本 | "1.00",或者用退格符分割的全部版权信息: "注释'\t'公司名'\t'文件描述'\t'主.次.版本'\t'工程名'\t'版权'\t'商标'\t'产品名" |
程序类型 | 默认0初级程序,1扩展DLL,2命令控制台,3函数类库。共0-7种。加8是8位,加16是16位,加32是32位,加64是64位,加128是宽字符环境。 | |
peres | 程序资源 | 指定资源类型和文件名.例如:程序资源 10,"sec.jpg" |
picon | 程序图标 | 程序图标“sec.ico”; |