读取txt或者字符串中的aar函数代码,并通过loadcode() 来加载执行此函数

By admin at 2018-08-26 • 1人收藏 • 1523人看过

如题,有个需求是能过加载并执行一个txt或者ini文件中的字符串,这个字符串中包含需要被调用的函数方法,程序里要执行此方法。

import console; 

var sss=/******
xieyi = function(str){
	var dataStr = string.left(string.replace(str,"\s",""),4);
	var ret = (10-tonumber(dataStr)*0.01);	
	return ret; 
}

******/


var xx = loadcode(sss)

console.varDump(xx())


console.varDump(xieyi("50 01"))

console.pause(true);

说一说注意关键点:

1,可以在字符串里添加

    var str1,str2 = ...

    来动态的获取外部提供的输入数据,但是这个数据需要在xx(str1,str2)的时候写

2,函数只需要执行一次xx()初始化,之后就可以无限制的使用xieyi()函数了。


blob.png

3 个回复 | 最后更新于 2018-08-26
2018-08-26   #1

更进一步:

如果字符串中是一个多维度Tab表,而且表里有字符串和函数,那么

import console; 

var sss=/******
xxtab={
	geshi = "41";
	xieyi = function(str){
		var dataStr = string.left(string.replace(str,"\s",""),4);
		var ret = (10-tonumber(dataStr)*0.01);	
		return ret; 
	}

}



******/


var xx = loadcode(sss)

console.varDump(xx())

console.varDump(xxtab.geshi)
console.varDump(xxtab.xieyi("50 01"))


console.pause(true);

blob.png

2018-08-26   #2
import console; 

var sss=/******
xxtab={
    	{
		geshi = "41";
		xieyi = function(str){
			var dataStr = string.left(string.replace(str,"\s",""),4);
			var ret = (10-tonumber(dataStr)*0.01);	
			return ret; 
			}
		};
		{
		geshi = "a3 50 01";
		xieyi = function(str){
			var dataStr = string.left(string.replace(str,"\s",""),4);
			var ret = (tonumber(dataStr,16)*0.01 -100);	
			return ret; 
			}
		}
}



******/


var xx = loadcode(sss)

console.varDump(xx())

console.varDump(xxtab[1].geshi)
console.varDump(xxtab[1].xieyi("50 01"))

console.varDump(xxtab[2].geshi)
console.varDump(xxtab[2].xieyi("50 01"))

console.pause(true);

blob.png

2018-08-26   #3

如果把loadcode()改为loadcodex(),那么就可以少写一个执行初始化的语句了

import console; 

var sss=/******
xxtab={
    	{
		geshi = "41";
		xieyi = function(str){
			var dataStr = string.left(string.replace(str,"\s",""),4);
			var ret = (10-tonumber(dataStr)*0.01);	
			return ret; 
			}
		};
		{
		geshi = "a3 50 01";
		xieyi = function(str){
			var dataStr = string.left(string.replace(str,"\s",""),4);
			var ret = (tonumber(dataStr,16)*0.01 -100);	
			return ret; 
			}
		}
}



******/

//改为loadcodex之后,就会立即初始化一次这个函数,就不用手动xx()了
var xx = loadcodex(sss)
//console.varDump(xx())

console.varDump(xxtab[1].geshi)
console.varDump(xxtab[1].xieyi("50 01"))

console.varDump(xxtab[2].geshi)
console.varDump(xxtab[2].xieyi("50 01"))

console.pause(true);


登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...