无名之辈-视觉脚本编译器开发(三)

无名之辈-视觉脚本编译器开发

上一个篇幅中我们提到要想完成一个独立的脚本编译器,则需要的最基础的三个条件:新建变量、计算变量、逻辑运算。前两个在上文中已经做了解析,逻辑运算将是本文的重点介绍对象。


提示:本文所有内容皆为原创,如有雷同联系我(WeChat:Conbo_iwork)。


前言

无论是if、for还是switch在实现逻辑运算的时候往往是最基础的运算方式,这种方式在C、C++、Java、Python、ST、SCL(DIN EN 61131-3 ‘国际标准为 IEC 1131-3’ )等都是一样的逻辑。但就是如果让这些逻辑运算符里面的变量变成我们编译后创建的变量,这就引出了我们的问题所在。


一、如何调用函数

1、函数在自定义的程序段中一定是一行一行被执行的,每个函数都一定有其独特的函数名,该函数名在自定义封装的函数库内不允许被重复写入,否则将会在调用的时候因不知道调用哪个而出现错误。
2、为了方便传递函数名,可以给每个函数床架一个函数ID,即FunctionID。在传递函数名的时候只需要int变量即可,减小运行所需内存也是优化程序的一种方式。
3、在执行函数调用的入口处会有一个庞大的“Switch”结构,根据函数ID将得到的参数传递给相应的函数以运行。
4、函数要么提供return返回值,要么有稳定的全局变量以供数据存储使用,如果要调试中间变量建议使用全局变量的方式储存,否则return是最优选择。
5、函数库需要单独封装为Dll调用,否则后续更新库文件还需要整个项目重新编译,不可取。
6、勤用结构体,结构化文本的调用使用结构体是最安全最不容易出问题的。结构体也有构造函数,可以初始化值使用。

二、如何传入参数

1、参数的读取一定是从程序段中拿到的参数值,并且只需要参数值即可,因为在封装函数库的时候,函数对应位置的对应参数是一定的,所以顺序拿到参数值后进行转变传递给参数即可。
2、如果要跨函数传感参数值,则需要将参数名称设定成链表(主要是不同参数的值的数量也不一样),然后在需要调用的位置自行识别参数的值,然后再使用。
3、针对具有条件意义的参数,特殊处理其条件即可,没必要以参数形式存放。

三、效果展示

脚本基本运算逻辑演示。点击查看视频(下面图模糊)

脚本基础逻辑运算


代码如下(视频逻辑):


for(int Count = 0;;Count<5;Count++){
	switch(Count){
		case 0: qDebug("this is 0");
		case 1: qDebug("this is 1");
		case 2: qDebug("this is 2");
		case 3: qDebug("this is 3");
		case 4: qDebug("this is 4");
	}
	if(Count>2){
		qDebug("If yes");
	}
	else{
		qDebug("If No");	
	}
}

运算结果:

1:	"this is 0"
2:	"If No"
3:	"this is 1"
4:	"If No"
5:	"this is 2"
6:	"If No"
7:	"this is 3"
8:	"If yes"
9:	"this is 4"
10:	"If yes"

想要实现基础的独立脚本编译器,最基础的运算单元应该能够正常运行,并且在调试过程中通过颜色变化等,可视化程序调试过程,能够输出、打印错误信息,能够将中间变量保存下来可以查看,这样的脚本编译器能够正常使用。

总结

脚本编译器的基础逻辑就到这里,后面会有更精彩的QTableWidget简单拖拽、在QLableWidget上打印错误信息、如何显示中间变量等等操作。包括注册时间过滤器、优化使用信号与槽的机制问题。
万年不变结尾:以上仅代表本人在这个行业、这个岗位的个人看法。以及针对遇到的此种问题提出的个人建议,不代表公司以及社会任何组织的任何利益或行为。本文所使用的所有库文件皆可追溯,若有侵权可联系本人(WeChat:Conbo_iwork)删除帖子。

MsCode脚本编译器教程 程序编写:汪京苑/教程编写:汪京苑/论坛昵称:幕夜流星/联系QQ:420452913 MsCode脚本编译器脚本录制步骤(以迅雷为例): 1.录制新脚本 点击录制新脚本。 2.软件配置 这里的软件名称没有任何讲究,随便输入。 点击选择指定安装程序的路径,然后点击下一步。 3.脚本录制 比如我想点击下一步这个按钮,那就先把鼠标移到下一步这个按钮前,记住只是移到按钮前,并不是点击这个按钮,然后按Home键获取该控件的信息。 当提示已经获取控件句柄,请选择执行命令的时候就表示编译器已经获取了该控件的信息,接下来选择你要进行的操作,比如你想点击该控件就点击单击控件,编译器就会自动执行你的命令。 看,你只是点击了单击控件,编译器就自动点击了程序上你想要点击的那个按钮,如果你想要点击我同意此协议那个选择框,只要重复上述的步骤,先把鼠标移到我同意此协议选择框前按Home键获取该控件的信息,然后点击单击控件,编译器就会自动记录该步骤并执行你的命令。 如果你想要更改安装路径,那么就先把鼠标移到安装路径所在的那个编辑框前按Home键获取该控件的信息。 然后点击更改控件内容,在弹出的输入框里输入新的安装路径,点击确认输入,编译器就会自动记录该步骤并执行你的命令,其他程序比如WinRAR在安装完成后会弹出一个名为WinRAR的文件夹,这时你可以把鼠标移到文件夹的标题前按Home键获取该控件的信息,然后点击关闭窗口,编译器就会自动记录该步骤并执行你的命令,最后如果安装结束点击下一步封装脚本,封装成功后就可以回到编译器主窗口去点击执行脚本来看看效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Conbo-biubiubiu

若于君有益,锱铢亦是动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值