极语言1-7,数组和数据表以及子类和方法,全局变量和局部变量

        读取数据表是为批量读取数据库而设计的功能,可以自定义数据结构,然后直接把数据读取到相应结构内存中,无需使用ADO等对象。
        通常我们使用ADO对象来读写数据,由于记录集对象结构过于复杂,每行每列的类型、名称、序号、长度、缓冲区指针和长度,以及各种属性、方法等。
        可是实际应用中,往往需要把记录集中的数据,再次读取到自己定义的变量(结构内存)中,所以我增加了直接读取数据到指定结构的功能。
        只要需要的字段数据读取出来,还可以直接改变数据类型。例如数据库中字段类型为整数,程序需要把整数类型数据全部转换成小数类型。
        同样的数值15,整数和单精度小数都占四字节,但是它们的数据却大不相同。程序定义为小数,数据库里是整数,就可以全部提取为小数数据
        读取后的数据表读写方法为:表名(行号).字段名。如:lv=玩家表(0).等级;玩家表(3).职业=5; 表名.rows为行数 表名.cols为列数
        读取数据是按查询的sql语句里的表名和字段顺序,并不是按照程序里的表名和字段名,所以程序代码里的表名和字段名是完全自定义的。
        数据表结构类型,跟自定义类型(type)的性质类似,类型是不支持数组的,所以可以用数据表代替类型,当自定义数组类型使用。
        长(表名)获取的是类型结构或者说每一行的数据长度,表名.len是申请的数组长度,使用前需要 重置 表名(数量)。
        申请的长度数量要大于或等于查询表的记录数,读取完数据之后,得到 表名.rows 数据表的实际读取记录数。
        数据表的序号是从0开始的,100行记录就是按序号0-99获取。读取的数据存放是一段连续的内存,行列是连续整齐排列的。
        数据表结构的名称定义和数据库(对象)的字段定义对比:

英文语法中文语法字段类型数值范围
char字符TinyInt-128~127
byte字节TinyInt数据同上,转为正数
short整形SmallInt-32768到32767
int整数Int-2147483648到2147483647
single小数Real参见数据类型
double浮点Float参见数据类型
string文本VarChar[16]需指定长度
date日期DateTime64位整数
long大数BigInt64位整数
binary二进制Binary[1640]需指定长度

        由于数据库中没有字节类型,把TinyInt读入字节类型时,负数会变成加256的正数

中文名英文名变量类型功能作用
.指针.Ptr数组数据缓冲区的指针
.长度.len数组/子类数组成员的数量/文本变量缓冲区大小/子类空间的长度
.维数.dim数组第一维数组的长度
.类对象对象数据的类关联标识CLSID,或称接口
.标识对象对象数据的IID标识
.指针.Ptr数据表数据缓冲区的指针
.长度.len数据表初始化可存储行数
.行数.rows数据表已读取数据的行数
.列数.cols数据表每行数据的列数
读取表query数据表读取数据到数组缓冲区
加数组addin数据表把某列数据加到一维数组

        数组,数据表和结构体都属于全局变量,数组可以是静态和动态两种
        静态数组例如: 整数 一(10);字节 二(5);动态数组括号内为空,例如 整形()
        结构体类型只支持是静态数组,静态数组不支持重置,保留和销毁
        数据表只支持动态数组,申请的数据是清零的,支持重置,保留和销毁
        子类需要通过"新建"申请内存才能使用,数据不清零,只支持销毁
        子类和对象支持全局变量和局部变量,实体是一个整数指针变量
        子类代码需要单独一个模块文件来书写,格式为:子类 名称{
        整数 变量名;小数 数值;子类的变量类型支持如下几种:

英文语法中文语法数值范围
Bool布尔真(True),假(False)
char,sbyte字符-128~127
byte,uchar字节0到256
short整形-32768到32767
word短数-32768到32767
ushort正数0到65535
int,uint,dword整数-2147483648到2147483647
single小数负数-3.402823E38到-1.401298E-45;正数1.401298E-45到3.402823E38
Double浮点负数时-1.79769313486232E308到-4.94065645841247E-324;
正数4.94065645841247E-324到1.79769313486232E308
long,ulong大数64位整数,32位编程下多用于存储或时间计算。
string文本[16]需指定长度,可代替二进制数据

子类变量均可以使用数组,下标长度必须是数字,不支持动态数组
书写子类变量时不能赋值,未新建子类时变量的数据并不存在
子类如果不包含变量,是不需要新建,不用申请内存空间
子类里面包括程序段,可以直接使用子类内部的变量
子类书写完之后,以大括号}结尾,跟命名子类后的{对应
使用子类时先要新建子类,才可以使用其变量和方法函数
子类名 名称1 = 新建 子类名; 整数 名称2=新建 子类名
也可以用赋值指向已存在的子类: 子类名 名称3=名称1;
子类变量用法:整数 数一=名称1.变量名;名称1.变量名=88;
传递参数时也可以使用子类:程序段 测试(子类名 名称3)
名称3.变量=99;变量9=名称3.读取(数据,4);名称3.写入(内容)
销毁子类方法是:销毁 名称2;子类名和子类实体要区分清楚
关于全局变量和局部变量
在小程序段内申请的变量包括提交的参数都是局部变量。
在子类或者数据表头内申请的变量属性子类变量。
在其它地方(小程序和子类外)申请的变量是全局变量。
全局变量包括字符、字节、整形、正整形、整数、正整数、小数、浮点、大数和自定义类型。
局部变量目前只有整数、小数和文本这三种。任何变量在作为参数传递的时候,均为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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值