请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册
查看: 1409|回复: 14

[其他] AARDIO函数助手(修改版)

[复制链接]

13

主题

25

帖子

32

积分
交易币
0

新手入门

Rank: 1

发表于 2017-2-18 17:02:28 | 显示全部楼层 |阅读模式
借鉴论坛中函数助手,添加了部分函数,请大家参考
[aardio] 纯文本查看 复制代码
import win.ui;
import fsys;
import sqlite;
import process;
import console;

if(io.exist("\aau.dat") ){fsys.delete("\aau.dat")}
var libDir ="~\lib";
var sqlconn = sqlite("\aau.dat")
var functab;
var contab;
var sectab;
var lname;
var fname;
/*DSG{{*/
mainForm = win.form(text="AARDIO 库浏览工具";right=756;bottom=535;bgcolor=10789024;parent=...)
mainForm.add(
bt_openlog={cls="button";text="打开日志";left=113;top=477;right=176;bottom=524;db=1;dl=1;z=18};
button={cls="button";text="更新";left=18;top=477;right=85;bottom=524;db=1;dl=1;z=3};
button2={cls="button";text="搜索";left=599;top=483;right=646;bottom=521;db=1;dl=1;z=4};
button3={cls="button";text="退出";left=682;top=477;right=739;bottom=524;db=1;dr=1;z=5};
button4={cls="button";text="保存对自定义说明的更改";left=436;top=306;right=751;bottom=332;ah=1;aw=1;dr=1;z=16};
edit={cls="edit";left=226;top=487;right=383;bottom=510;db=1;dl=1;edge=1;z=13};
groupbox={cls="groupbox";left=216;top=468;right=659;bottom=528;bgcolor=255;db=1;dl=1;transparent=1;z=1};
listbox={cls="listbox";left=435;top=359;right=750;bottom=469;ah=1;aw=1;bgcolor=16777215;border=1;db=1;dr=1;edge=1;hscroll=1;items={};vscroll=1;z=2};
radiobutton={cls="radiobutton";text="搜索函数和常量名";left=401;top=481;right=543;bottom=499;bgcolor=10789024;db=1;dl=1;z=14};
radiobutton2={cls="radiobutton";text="搜索智能提示和自定义说明";left=401;top=500;right=575;bottom=517;bgcolor=10789024;checked=1;db=1;dl=1;z=15};
richedit={cls="richedit";left=435;top=44;right=750;bottom=160;ah=1;aw=1;dr=1;edge=1;hscroll=1;multiline=1;vscroll=1;wrap=1;z=8};
richedit2={cls="richedit";left=435;top=179;right=751;bottom=308;ah=1;aw=1;dr=1;edge=1;hscroll=1;multiline=1;vscroll=1;wrap=1;z=9};
static={cls="static";text="智能提示";left=435;top=7;right=749;bottom=27;ah=1;aw=1;bgcolor=12639424;border=1;color=255;dr=1;z=10};
static2={cls="static";text="自定义说明";left=440;top=163;right=510;bottom=177;ah=1;aw=1;dr=1;transparent=1;z=11};
static3={cls="static";text="对象引用";left=440;top=337;right=509;bottom=353;ah=1;aw=1;dr=1;transparent=1;z=12};
static4={cls="static";left=435;top=24;right=749;bottom=41;ah=1;aw=1;bgcolor=12639424;border=1;color=128;dr=1;z=17};
tab={cls="tab";left=217;top=10;right=432;bottom=465;ah=1;aw=1;db=1;dl=1;z=7};
treeview={cls="treeview";left=8;top=9;right=216;bottom=465;ah=1;asel=false;bgcolor=16777215;border=1;db=1;dl=1;edge=1;hscroll=1;vscroll=1;z=6}
)
/*}}*/



mainForm.button3.oncommand = function(id,event){
	//mainForm.msgbox( mainForm.button3.text );
	win.quitMessage();
	
}
var page_fun=mainForm.tab.add(text="   函  数   ")
var page_con=mainForm.tab.add(text="   常  量   ")
var page_sec=mainForm.tab.add(text=" 搜索结果  ")
page_fun.add(
	listbox={ bgcolor=16777215;bottom=463;right=215;left=0;dr=1;dl=1;dt=1;db=1;
		items={  };vscroll=1;hscroll=1;z=1;top=3;edge=1;cls="listbox" }
)
page_con.add(
	listbox={ bgcolor=16777215;bottom=463;right=215;left=0;dr=1;dl=1;dt=1;db=1;
		items={  };vscroll=1;hscroll=1;z=1;top=3;edge=1;cls="listbox" }
)
page_sec.add(
	listbox={ bgcolor=16777215;bottom=463;right=215;left=0;dr=1;dl=1;dt=1;db=1;
		items={  };vscroll=1;hscroll=1;z=1;top=3;edge=1;cls="listbox" }
)
////////////////////////////
//    保存按钮单击事件    //
////////////////////////////
mainForm.button4.oncommand = function(id,event){
	var command =sqlconn.prepare("UPDATE [func] SET shuoming =@text WHERE libpath =@path and funcname =@funcname")
	command.bind.parameterByNamesAt(text =mainForm.richedit2.text;path =lname;funcname =fname)
	command.step();
	mainForm.msgbox(lname)
	command.finalize();
}

////////////////////////////
//    搜索按钮单击事件    //
////////////////////////////
mainForm.button2.oncommand = function(id,event){
	var i=0;
	var sql = "select * from func where "
	if(mainForm.radiobutton.checked)
		sql =sql +"funcname like '%"+mainForm.edit.text +"%'";
	if(mainForm.radiobutton2.checked)
		sql =sql +"tishi like '%"+ mainForm.edit.text +"%' or shuoming like '%" + 
			mainForm.edit.text +"%'";
	sectab =sqlconn.getTable(sql)
	page_sec.listbox.clear();
	mainForm.tab.selIndex =3
	for(k,v in sectab){
		page_sec.listbox.add(v.funcname)
		i++;
	}
	mainForm.msgbox("搜索完成,共找到"++ i ++"个函数");	
}
//////// 打开日志 ////////////////////////////
mainForm.bt_openlog.oncommand =function(id,event){
	var path =io.exist("/log.txt");
	if(path)
		process.explore(path)
	else
		mainForm.msgbox("日志文件不存在!");
}

////////////////////////////////////
getpath =function(hitem){
	
	var str =mainForm.treeview.getItemText(hitem)
	path =str + path;
	
	pitem =mainForm.treeview.getParentItem(hitem)
	if(pitem){
		path ="\"+path;
		getpath(pitem)
		
	}
	
}

mainForm.treeview.onnotify = function(id,code,ptr){
	
	if(code =0xFFFFFFFE/*_NM_CLICK*/)
	{
		var item = mainForm.treeview.hitTest();
		if(item){
			cli =mainForm.treeview.getChildItem(item)
			if(cli =null){
				path = "";
				getpath(item)
				//显示函数
				viewfunc(path)
			}
		}
	}
	
	
}

viewfunc=function(libname){
	page_fun.listbox.clear();
	page_con.listbox.clear();
	mainForm.listbox.clear();
	//func =sqlconn.getTable("SELECT funcname FROM [func] where leixing =0 and libpath ='"+ libname+"'")
	functab =sqlconn.getTable("SELECT * FROM [func] ",{leixing =2;libpath =libname})   //类型2 对象引用  1  常量  0 函数
	for(k,v in functab){
		if(v.tishi){mainForm.listbox.add(v.funcname +" = "+v.tishi);}
	}
	functab =sqlconn.getTable("SELECT * FROM [func] ",{leixing =0;libpath =libname})
	for(k,v in functab){
		if(v.funcname){page_fun.listbox.add(v.funcname);}
	}
	contab =sqlconn.getTable("SELECT * FROM [func] ",{leixing =1;libpath =libname})
	for(k,v in contab){
		if(v.funcname){page_con.listbox.add(v.funcname);}
	}	
}

page_fun.listbox.oncommand =function(id,event){
	if(event == 0x1){
		for(k,v in functab){
			
			if(v.funcname == page_fun.listbox.selText){
				mainForm.richedit.text = string.replace(v.tishi,"\\n",'\r\n')
				mainForm.static.text = v.libpath;
				var Namespace =v["namespace"] :" ";
				mainForm.static4.text = "["++ Namespace ++"]"++v.funcname;
				mainForm.richedit2.clear();
				mainForm.richedit2.text = v.shuoming;
				lname =v.libpath;
				fname =v.funcname;
			}
		}
	}
}

page_con.listbox.oncommand =function(id,event){
	if(event ==0x1){
		for(k,v in contab){
			if(v.funcname == page_con.listbox.selText){
				mainForm.static.text = v.libpath;
				var Namespace =v["namespace"] :" ";
				mainForm.static4.text = "["++ Namespace ++"]"++v.funcname;
				mainForm.richedit.text =string.replace(v.tishi,"\\n",'\r\n');
				mainForm.richedit2.text =v.shuoming;
				lname =v.libpath;
				fname =v.funcname;
			}
		}
	}
}

page_sec.listbox.oncommand =function(id,event){
	if(event ==0x1){
		for(k,v in sectab){
			if(v.funcname == page_sec.listbox.selText){
				mainForm.static.text = v.libpath;
				var Namespace =v["namespace"] :" ";
				mainForm.static4.text = "["++ Namespace ++"]"++v.funcname;
				mainForm.richedit.text =string.replace(v.tishi,"\\n",'\r\n');
				mainForm.richedit2.text =v.shuoming;
				lname =v.libpath;
				fname =v.funcname;
			}
		}
	}
}

if(not sqlconn.existsTable("func"))
{
	sqlconn.exec("create table func(
					libpath,
					NameSpace,
					funcname,
					tishi,
					shuoming,
					leixing );")
}
if(not sqlconn.existsTable("libmd5"))
{
	sqlconn.exec("create table libmd5(
					libname,
					md5,
					date);")
}

viewtree=function(){
	tree={};
	for libpath in sqlconn.each("SELECT distinct libpath FROM func ") {
		//mainForm.listbox2.add(libpath);
		path = string.split(libpath,'\\')
		tab =tree;
		for(i=1;#path-1;1){
			//树型表为空,直接添加结点
						
			find =false;
			if(#tab =0){
				table.push(tab,{text=path[i];children={}})
				tab=tab[#tab].children
			}
			else{
				max =#tab;
				
				for(j=1;max;1)
				{
					if(tab[j].text = path[i])
					{
						table.mix(tab[j],{children = {}});
						tab =tab[j].children
						find =true;
						break
					}
					
				}
				if(find=false){
					table.push(tab,{text=path[i];children={}})
					tab=tab[#tab].children
					
				}
				
			}
		}
		table.push(tab,{text=path[#path]})
	}
	mainForm.treeview.clear();
	mainForm.treeview.insertItem(tree);
}
viewtree();
/*更新数据库
//取LIB目录	
//枚举所有文件
//	在表中查找文件名,找到
//		判断MD5是否相同,相同证明文件没有更新,不用提取智能提示,不相同则调用提取函数
//	没有找到文件,证明是新加库,调用提取函数
//枚举结束
*/
import crypt;
filemd5 =function(Path){
	//定义哈希变量
	var crc32;
	var md5 = crypt().createHashByMd5();
	
	
	//打开文件
	var file,err =  io.open(Path, "rbR");//R 随机优化
	if(!file) error("打开文件失败" + err,2 ) 
 
 	//计算哈希值
 	bufsize = 1024 * 1024;
 	var buffer = raw.malloc( bufsize ); 
 	
	var readSize = file.readBuffer(buffer);
	while ( readSize ){  
		md5.hashBuffer(buffer,readSize);
		
		readSize = file.readBuffer(buffer) 
	};
	file.close();
	return md5.getHexValue();	
	
}


/*uptxt{{*/
uptxt =function(libname,fullpath,new=false){
//console.log(libname,fullpath,new)
	var b =false;
	var fun={};
	var Namespace;
	var kk=0
    var LN=""
	//loggfile =io.open("\logg.txt","a+")
	//for line in io.lines(fullpath) { 
	
var str=string.load( fullpath)  //导入文本
stab=string.split(str,'\r')            //取得最大行数

for(i=1;#stab;1){
		
	line=stab[i]
	if(i<#stab){line2=stab[i+1]}else{line2=""}
	line=string.replace(line,'\n',"")
	line2=string.replace(line2,'\n',"")
	
		var ML=""
		if(line ="")
			continue ;     //next for	
		if(string.find(line,"@=")!=null){         //存在 =
							b =true;                                             //开头 真
							//Namespace =string.match(line,"\((.*)\)");            //Namespace=**intellisense(!access)
			 				
							位置=string.find(line,"@=")
							位置2=string.find(line2,"@="):0
							函数 = string.left(line,位置-1)
							函数2= string.left(line,位置2-1)
							if(string.find(line2,"@=")!=null){函数2 = string.left(line2,位置2-1)}else{函数2=""}
							说明 = string.sub(line,位置+1,-1);
							//去除首尾空字符
							函数 =string.trim(函数);
							说明 =string.trim(说明);
							Namespace=函数
							Namespace2=函数2
							if(string.find(函数,"@!")){Namespace =string.replace(函数,"[\!]","")}
							if(string.find(函数2,"@!")){Namespace2 =string.replace(函数2,"[\!]","")}
							qkt=string.find(Namespace,"[\(\.]",3):0								
							if(string.find(Namespace2,"[\(\.]",3)){qkt2=string.find(Namespace2,"[\(\.]",3)}else{qkt2=0}
							
							if(qkt>2){DN=string.left(Namespace,qkt-1)}else{DN=Namespace}	 
							if(qkt2>2){KN=string.left(Namespace2,qkt2-1)}else{KN=Namespace2}   				
			    				//console.log(Namespace,Names)
           	                if(DN=LN:DN=KN){ML=DN}else {ML="default"}
		                    //loggfile.write(line++"(LINE)"++KN++"(KN"++#KN++")	"++DN++"(DN"++#DN++")	"++LN++"(LN)"	)
		                    LN=DN 
		                    if(#ML){ML="\"++ML}
							if(not new)
								table.push(fun,{funname=函数;NameSpace=Namespace});
							var leixing =0;   //类型2 对象引用  1  常量  0 函数
							if(string.left(函数,1) ="_")        //从左第一个是__ 则 常量1
								leixing =1;//常量
							//if(string.left(说明,1) ="!")
							if(string.find(说明,"!"))           //解释中发现!则引用
								leixing =2;//实例引用
							//console.log(line)
							//console.log(libname,Namespace,函数,说明,leixing)
							if(new){
										var command =sqlconn.prepare("insert into func(libpath,NameSpace,funcname,tishi,leixing)
									 					values( @libpath,@NameSpace,@func,@tishi,@lx )")
										command.bind.parameterByNamesAt(
											libpath =libname++ML;
											//NameSpace=Namespace;
											func =函数;
											tishi =说明;
											lx =leixing;
										).step();
										command.finalize();
										logfile.write("新增-->[",Namespace,"]",函数,"=",说明,'\r\n');
							}else {
					      					var dat = sqlconn.getTable("SELECT * FROM func",{funcname =函数;NameSpace=Namespace})
											if(#dat =0){      //没有找到此函数
															var command =sqlconn.prepare("insert into func(libpath,NameSpace,funcname,tishi,leixing)
									 									values( @libpath,@NameSpace,@func,@tishi,@lx )")
															console.log(libpath,NameSpace,func,tishi,lx)
															command.bind.parameterByNamesAt(
																libpath =libname;
																//NameSpace =Namespace;							
																func =函数;
																tishi =说明;
																lx =leixing;
															).step();
															
															command.finalize();
															logfile.write("新增-->[",Namespace,"]",函数,"=",说明,'\r\n');
															win.delay()
															
					 						}else{
																if(说明!=dat[1].tishi){
																	var command = sqlconn.prepare("UPDATE func SET tishi=@tishi WHERE (funcname =@funcname) and(NameSpace =@NameSpace) ")
																	command.bind.parameterByNamesAt(tishi =说明;funcname =函数;NameSpace=Namespace);
																	command.step();
																	command.finalize();
																	logfile.write("更新-->[",Namespace,"]",函数,'\r\n');
																	logfile.write("    旧的(=",dat[1].tishi,'\r\n');
																	logfile.write("    新的(=",说明,'\r\n');
																	win.delay()
																}
											}							
							}
			     }
	   win.delay() 
	}//next for
		
	if(not new){                   //不新
	//反查有没有删除的函数 
		var dat =sqlconn.getTable("SELECT funcname FROM func where libpath='"+libname+"'")
		if(#dat != #fun)
		{
			for(row=1;#dat){
				var zhaodao =false;
				for(k,v in fun){
					if(dat[row].funcname =v.funname and dat[row]["namespace"]=v.NameSpace){
						zhaodao =true;
						break ;
					}
				}
				if(zhaodao = false){
					sqlconn.exec("DELETE FROM func where libpath='"+libname+"' and funcname='"+dat[row].funcname+"'")
					logfile.write("删除-->",函数,'\r\n');
					win.delay()
				}
			}		
		}
	}
}
/*}}*/

/*uplib{{*/
uplib =function(libname,fullpath,new=false)
{
	var b =false;
	var fun={};
	var Namespace;
	
	for line in io.lines(fullpath) { 
		if(line ="")
			continue ;
		if(b){
			if(string.find(line,"<@end intellisense@>")!=null){
				b=false;
			}
			else{
				//查找第一个等号的位置
				位置=string.find(line,"@=")
				if(位置=null){
					说明=说明+line;
					var command = sqlconn.prepare("UPDATE func SET tishi=@tishi WHERE funcname =@funcname ")
					command.bind.parameterByNamesAt(tishi =说明;funcname =函数);
					command.step();
					command.finalize();
					//sqlconn.exec("UPDATE func SET tishi = '"+说明+"' WHERE funcname = '"+函数+"';");
					continue ;
				}
				函数 = string.left(line,位置-1)
				说明 = string.sub(line,位置+1,-1);
				//去除首尾空字符
				函数 =string.trim(函数);
				说明 =string.trim(说明);
				if(not new)
					table.push(fun,{funname=函数;NameSpace=Namespace});
				var leixing =0;
				if(string.left(函数,1) ="_")
					leixing =1;//常量
				//if(string.left(说明,1) ="!")
				if(string.find(说明,"!"))
					leixing =2;//实例引用
				if(new){
					var command =sqlconn.prepare("insert into func(libpath,NameSpace,funcname,tishi,leixing)
									 values( @libpath,@NameSpace,@func,@tishi,@lx )")
					command.bind.parameterByNamesAt(
						libpath =libname;
						//NameSpace=Namespace;
						func =函数;
						tishi =说明;
						lx =leixing;
					).step();
					command.finalize();
					logfile.write("新增-->[",Namespace,"]",函数,"=",说明,'\r\n');
				}
				else {
					var dat = sqlconn.getTable("SELECT * FROM func",{funcname =函数;NameSpace=Namespace})
					if(#dat =0)//没有找到此函数
					{
						var command =sqlconn.prepare("insert into func(libpath,NameSpace,funcname,tishi,leixing)
									 values( @libpath,@NameSpace,@func,@tishi,@lx )")
						command.bind.parameterByNamesAt(
							libpath =libname;
							//NameSpace =Namespace;							
							func =函数;
							tishi =说明;
							lx =leixing;
						).step();
						command.finalize();
						logfile.write("新增-->[",Namespace,"]",函数,"=",说明,'\r\n');
						win.delay()
					}
					else {
						if(说明!=dat[1].tishi){
							var command = sqlconn.prepare("UPDATE func SET tishi=@tishi WHERE (funcname =@funcname) and(NameSpace =@NameSpace) ")
							command.bind.parameterByNamesAt(tishi =说明;funcname =函数;NameSpace=Namespace);
							command.step();
							command.finalize();
							logfile.write("更新-->[",Namespace,"]",函数,'\r\n');
							logfile.write("    旧的(=",dat[1].tishi,'\r\n');
							logfile.write("    新的(=",说明,'\r\n');
							win.delay()
						}
					}
											
				}
				
			}
		}
		else{
			if(string.find(line,"<@intellisense@>")!=null){
				b =true;
				Namespace =string.match(line,"\((.*)\)");
				//console.log("Namespace=",Namespace);
				}
		}
	win.delay() 
	}
	if(not new){
	//反查有没有删除的函数 
		var dat =sqlconn.getTable("SELECT funcname FROM func where libpath='"+libname+"'")
		if(#dat != #fun)
		{
			for(row=1;#dat){
				var zhaodao =false;
				for(k,v in fun){
					if(dat[row].funcname =v.funname and dat[row]["namespace"]=v.NameSpace){
						zhaodao =true;
						break ;
					}
				}
				if(zhaodao = false){
					sqlconn.exec("DELETE FROM func where libpath='"+libname+"' and funcname='"+dat[row].funcname+"'")
					logfile.write("删除-->",函数,'\r\n');
					win.delay()
				}
			}		
		}
	}
}
/*}}*/

/*up{{*/

mainForm.button.oncommand = function(id,event){
	//var tab_libmd5 = sqlconn.getTable("SELECT * FROM libmd5 ")
	winlog,wb = mainForm.loadForm("\res\log.aardio",mainForm /*指定父窗口*/ );
	winlog.show();
	logfile =io.open("\log.txt","a+")
	var cfg =string.load("~/Config/SYS.CFG")
	var ver=string.match(cfg,"<@version = @>(\C+)")
	var tm =time(,"%Y年%m月%d日");	
	logfile.write("=====================版本号:",ver,"---更新日期:",tostring(tm),"=====================",'\r\n');
//*****************************************************************************************************************        txt
	var cfgDir="~/Config"
	fsys.enum( cfgDir, "*.txt",
		function(dir,filename,fullpath,findData){ 
			if(filename){ 
	           	//if(..string.endWith(filename,"#Src.aardio",true))
	           	//	return ;
	           	var libname =fsys.path.relative(fullpath,cfgDir);
	           	libname =..string.trimleft(libname,"\\");
	           	winlog.static.text =libname; 
	           	var dat = sqlconn.getTable("SELECT * FROM libmd5 where libname ='"+libname +"'")
	           	//计算md5
	           	var	fmd =filemd5(fullpath)
	           	tm =time()
	           	tm.format="%Y-%m-%d";
	           	date =tostring(tm);
	           	if(#dat =0){
	           	//没有找到记录,新的库文件,要更新
	           		winlog.edit.appendText("新增库文件:"+libname+'\r\n');
	           		logfile.write("*******************新增库文件:",libname,"*******************",'\r\n');	
	           		uptxt(libname,fullpath,true)
	           		//mainForm.msgbox("insert into libmd5 values( '"+libname+"','"+fmd+"',"+date+")")
	           		sqlconn.exec("insert into libmd5 values( '"+libname+"','"+fmd+"','"+date+"')")
	           			
	           	}
	           	else{
	           		if(fmd !=dat[1].md5){
	           		   	//md5不同,库文件有更新
	           			winlog.edit.appendText("更新库文件:"+libname+'\r\n');
	           			logfile.write("*******************更新库文件:",libname,"*******************",'\r\n');	
	           			uptxt(libname,fullpath)
	           			sqlconn.exec("UPDATE libmd5 SET md5 = '"+fmd+"',date = '"+date+"' WHERE libname = '"+libname+"'");
	           			
	           		}
	           	}
	           	
			}
			
		} 
		,/*如果此参数为false则忽略子目录*/
	);
//********************************************************************************************************************************************		
	fsys.enum( libDir, "*.aardio",
		function(dir,filename,fullpath,findData){ 
			if(filename){ 
	           	//if(..string.endWith(filename,"#Src.aardio",true))
	           	//	return ;
	           	var libname =fsys.path.relative(fullpath,libDir);
	           	libname =..string.trimleft(libname,"\\");
	           	winlog.static.text =libname; 
	           	var dat = sqlconn.getTable("SELECT * FROM libmd5 where libname ='"+libname +"'")
	           	//计算md5
	           	var	fmd =filemd5(fullpath)
	           	tm =time()
	           	tm.format="%Y-%m-%d";
	           	date =tostring(tm);
	           	if(#dat =0){
	           	//没有找到记录,新的库文件,要更新
	           		winlog.edit.appendText("新增库文件:"+libname+'\r\n');
	           		logfile.write("*******************新增库文件:",libname,"*******************",'\r\n');	
	           		uplib(libname,fullpath,true)
	           		//mainForm.msgbox("insert into libmd5 values( '"+libname+"','"+fmd+"',"+date+")")
	           		sqlconn.exec("insert into libmd5 values( '"+libname+"','"+fmd+"','"+date+"')")
	           			
	           	}
	           	else{
	           		if(fmd !=dat[1].md5){
	           		   	//md5不同,库文件有更新
	           			winlog.edit.appendText("更新库文件:"+libname+'\r\n');
	           			logfile.write("*******************更新库文件:",libname,"*******************",'\r\n');	
	           			uplib(libname,fullpath)
	           			sqlconn.exec("UPDATE libmd5 SET md5 = '"+fmd+"',date = '"+date+"' WHERE libname = '"+libname+"'");
	           			
	           		}
	           	}
	           	
			}
			
		} 
		,/*如果此参数为false则忽略子目录*/
	);
	
	
	logfile.close();
	mainForm.msgbox("更新完成")
	viewtree();
}
/*}}*/

mainForm.show() 
win.loopMessage(); 

函数助手3 (2).zip

1 MB, 下载次数: 1058

回复

使用道具 举报

0

主题

39

帖子

115

积分
交易币
0

编程一段

Rank: 2

发表于 2017-2-19 22:43:53 | 显示全部楼层
用了一下,每次运行都要重构数据库。太费时了。
回复 支持 1 反对 0

使用道具 举报

0

主题

39

帖子

115

积分
交易币
0

编程一段

Rank: 2

发表于 2017-2-18 17:54:24 | 显示全部楼层
好东西。谢谢分享。
回复 支持 反对

使用道具 举报

5

主题

74

帖子

286

积分
交易币
0

编程二段

Rank: 3Rank: 3

发表于 2017-2-18 19:25:07 | 显示全部楼层
以前就用个这个,很不错!
回复 支持 反对

使用道具 举报

0

主题

3

帖子

11

积分
交易币
0

新手入门

Rank: 1

发表于 2017-2-19 11:40:06 | 显示全部楼层
好像以前论坛有个,僵尸了多年,你帮他升级了,谢谢
回复 支持 反对

使用道具 举报

0

主题

5

帖子

5

积分
交易币
0

新手入门

Rank: 1

发表于 2017-2-28 19:13:47 | 显示全部楼层
lvhoo 发表于 2017-2-19 22:43
用了一下,每次运行都要重构数据库。太费时了。

前面有一句代码是删除数据库的,你注释掉就不会每次都重建了
回复 支持 反对

使用道具 举报

0

主题

39

帖子

115

积分
交易币
0

编程一段

Rank: 2

发表于 2017-2-28 21:47:14 | 显示全部楼层
玩转岛国 发表于 2017-2-28 19:13
前面有一句代码是删除数据库的,你注释掉就不会每次都重建了

是的。谢谢~。
回复 支持 反对

使用道具 举报

1

主题

7

帖子

6

积分
交易币
0

新手入门

Rank: 1

发表于 2017-3-6 16:03:45 | 显示全部楼层
好东西。谢谢分享。
回复 支持 反对

使用道具 举报

1

主题

3

帖子

3

积分
交易币
0

新手入门

Rank: 1

发表于 2017-3-19 17:09:09 | 显示全部楼层
点更新提示出错,是不是需要更新什么东西?
回复 支持 反对

使用道具 举报

0

主题

6

帖子

5

积分
交易币
0

新手入门

Rank: 1

发表于 2017-6-29 15:20:39 | 显示全部楼层
收下先,谢楼主!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



GMT+8, 2018-2-25 03:55 , Processed in 0.156253 second(s), 29 queries .

© 2001-2011 Powered by Discuz! X3.2.

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