吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 1250|回复: 3

[易语言] 【虚表的应用】

[复制链接]
书香 发表于 2023-5-22 04:03 | 显示全部楼层 |阅读模式

本帖最后由 书香 于 2024-2-10 04:51 编辑

本节难度较大,不要求掌握,只有在处理几w几十w数据加载的时候才需要被使用到


源码下载: 虚表操作.zip (17.15 KB, 下载次数: 3)

效果图如下,我们本节将演示如何将1.txt里面的数据加载到虚表中
forum.jpg

我们先看启动窗口创建完毕后执行的代码
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
xb彗星虚表操作类  
数据文本型  
数据_元素文本型0 
当前选中项整数型虚表的当前选中行数

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
xb.创建 (取窗口句柄 (), 8, 8, 352, 344)  ' 设置表格的位置和大小,虚表不像超级列表框可以直接在开发时拖动设计组件,需要使用函数进行api创建,这便是创建代码
插入项目列 ()  ' 设置列的标题与宽度
xb.显示表格线 ()
xb.整行选择 ()
xb.事件_鼠标右键单击 (&事件_鼠标右键单击)
数据 = 到文本 (读入文件 (取特定目录 (3)“1.txt”))
数据_元素 = 分割文本 (数据, #换行符, )
加载数据 ()


i支持库列表   支持库注释   
shell操作系统界面功能支持库


插入项目列 ()相当于超级列表框的设置标题头宽度文字
  
子程序名返回值类型公开备 注
插入项目列  
变量名类 型静态数组备 注
标题组文本型 0
标题宽度整数型 0
i整数型  
标题组 = { “序号”, “账号”, “密码” }
标题宽度 = { 60, 130, 130 }
计次循环首 (取数组成员数 (标题组), i)
虚表.插入列 (-1, 标题组 , 标题宽度 , 1)
计次循环尾 ()


分割数组操作是全文的重点,看上去不难,我们就是将数据存储在了数据_元素这个数组里面,难在后面的置标题,大家先留意下这里
  
数据 = 到文本 (读入文件 (取特定目录 (3)“1.txt”))
数据_元素 = 分割文本 (数据, #换行符, )


i支持库列表   支持库注释   
shell操作系统界面功能支持库


接下来是加载数据()
  
子程序名返回值类型公开备 注
加载数据  
虚表.全部删除 ()
虚表.置表项数 (取数组成员数 (数据_元素))
虚表.事件_填充表项 (&事件_填充表项)



虚表.置表项数就是要添加的虚表行数,这里不能写错了
虚表.事件_填充表项对应的是虚表渲染过程,我们前面讲过了,虚表只是实时渲染出眼睛能够看到的部分,也就是当虚表需要开始渲染的时候,会触发响应子程序事件_填充表项()&事件_填充表项称为子程序指针,类似的写法还有启动线程(&子程序1),那我们来看看事件_填充表项()是如何写的
  
子程序名返回值类型公开备 注
事件_填充表项  
参数名类 型参考可空数组备 注
项目指针整数型   
标题指针整数型   
变量名类 型静态数组备 注
超级列表框项目超级列表框项目  
账号密码文本型 0
超级列表框项目 = 指针到列表框项目 (项目指针)
账号密码 = 分割文本 (数据_元素 [超级列表框项目.表项索引 + 1], “==”, )
如果真 (超级列表框项目.子项索引 = 0)
写到内存 (到文本 (超级列表框项目.表项索引 + 1), 标题指针, )
如果真 (超级列表框项目.子项索引 = 1)
写到内存 (账号密码 [1], 标题指针, )
如果真 (超级列表框项目.子项索引 = 2)
写到内存 (账号密码 [2], 标题指针, )

代码看上去很复杂,这实际上是内存转换的写法,主要目的就是告诉大家当前正在插入哪一行哪一列
超级列表框项目.表项索引的结果是当前操作的行
超级列表框项目.子项索引的结果是当前操作的列
重点:这里不像超级列表框在置标题的时候需要填写第几行,只需要填写列就可以了,置标题也就是写到内存()函数,这句代码很重要
账号密码 = 分割文本 (数据_元素 [超级列表框项目.表项索引 + 1], “==”, )
超级列表框项目.表项索引就是当前操作的行,但是在虚表超级列表框中都有一个特点,就是从0开始,也就是0表示第一行第一列
但是数组是从1开始的,也就是最小是数组[1]
我们在设计的时候就是第一个成员user1要插入第1行,第2个成员user2需要插入第2
比如我们正在插入第7行,那么超级列表框项目.表项索引=6(从0开始),数据_元素 [超级列表框项目.表项索引 + 1]也就是数据_元素 [7],取出的就是user7==jiasias

所以数据_元素 [超级列表框项目.表项索引 + 1]取出的就是当前行对应的账号==密码



接下来就是一个再次分割,得到一个新的数组账号密码,然后通过写入内存去置表格数据


我们还绑定了一个菜单事件
  
虚表.事件_鼠标右键单击 (&事件_鼠标右键单击)



  
子程序名返回值类型公开备 注
事件_鼠标右键单击  
当前选中项 = 虚表.取鼠标指针所在的索引 ()
弹出菜单 (功能, , )

这里还是没啥难度


接下来演示的是菜单操作,这个前面学过了,但是我们的目的是教会大家如何取虚表的表项的值
  
子程序名返回值类型公开备 注
_取出账号_被选择  
变量名类 型静态数组备 注
账号文本型  
账号 = 虚表.取标题 (当前选中项)
信息框 (账号, 0, , )



但是修改虚表内表项的值则显得比较难了,还记得前面让大家注意的数组数据_元素吗,由于虚表不支持修改,因此我们只能去修改数组,然后重新加载,我们这里对选中行的密码改成了66666
  
子程序名返回值类型公开备 注
_修改表项密码为123_被选择  
数据_元素 [当前选中项 + 1] = 虚表.取标题 (当前选中项, 1)“==”“66666”
加载数据 ()   ' 重新加载,相当于刷新



(点击返回课程目录https://www.52hb.com/thread-58658-1-1.html



评分

参与人数 11HB +12 THX +6 收起 理由
扬喆 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
小声点我布隆 + 2 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
消逝的过去 + 1
浅酌◇咖啡 + 1
郭咩咩 + 1
DDK4282 + 1 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
麒麟 + 2 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
花盗睡鼠 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
美好映像 + 2 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
sjtkxy + 1 + 1

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
sjtkxy 发表于 2023-5-22 04:41 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
美好映像 发表于 2023-5-22 07:57 | 显示全部楼层

学习不断
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
放过羊 发表于 2023-8-15 13:05 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表