📄 vbs_context.cpp
字号:
printf("%s\n",s1);}bool Cvbs_context::true_value(const char* s0){ string s(s0); if (s == "False" ||s == "#0" || s=="#" || s=="" || s == "$0" || s=="$") { return false; } return true;}int Cvbs_context::int_value(const char* s){ if (s[0]=='#' || s[0]=='$') { return atoi(s+1);} if (strcmp(s,"False")==0) return 0; if (strcmp(s,"True")==0) return 1; return 0;}int Cvbs_context::set_arg_val(const char* fn, int n, const char* value){ string str(fn); vars_table::iterator i; toUpperCase(str); char tmp[32]; sprintf(tmp,"@%u",n); for (i = var.begin();i != var.end();i++ ) { if (strstr((*i).first.c_str(),str.c_str())!=0) { if ((*i).first.rfind(tmp)!=string::npos) { (*i).second = value; break; } } } return 0;}int Cvbs_context::save_func(const char* name, const char* body){ set_var((string(name)+"@Body").c_str(),body);}int Cvbs_context::call(const char* name0){ string name(name0); Cvbs_context func; toUpperCase(name); string sTmp; vars_table::iterator i; for (i = var.begin();i != var.end();i++ ) { size_t found,found2; found = (*i).first.find(name); if (found!=string::npos) { found = (*i).first.find("@"); found2 = (*i).first.find("@",found+1); if (found2 == string::npos) continue; sTmp = (*i).first.substr(found+1,found2-found-1); func.set_var(sTmp.c_str(),(*i).second.c_str()); } } func.execute(get_var((name+"@Body").c_str()).c_str(),var);}int Cvbs_context::create_array(const char* name,int num){ int n; char tmp[32]; string str; for(n=0;n< num;n++) { sprintf(tmp,"%u",n); str=string(name)+"#"+tmp; set_var(str.c_str(),""); } return n;}int Cvbs_context::set_array_dim(const char* name,int dim){ char tmp[32]; sprintf(tmp,"#%u",dim); string str; string arr = name; toUpperCase(arr); arr+="#"; str = get_var(arr.c_str()); str+=tmp; set_var(arr.c_str(),str.c_str()); return 0;}int Cvbs_context::get_array_dim(const char* name,int idx){ string str; string arr = name; toUpperCase(arr); arr+="#"; str = get_var(arr.c_str()); size_t pos=string::npos; while(idx--) {pos = str.rfind("#",pos); if (idx && pos!=string::npos) pos--;}; size_t next = str.find_first_not_of("0123456789",pos+1); if (next!=string::npos) next = next - pos - 1; str=str.substr(pos+1,next); return atoi(str.c_str());}int Cvbs_context::set_array_val(const char* name,int idx,const char* val){ char tmp[32]; sprintf(tmp,"#%u",idx); string arr = name; toUpperCase(arr); arr+=tmp; set_var(arr.c_str(),val); return 0;}bool Cvbs_context::isSubName(const char* name){ string str(name); toUpperCase(str); vars_table::iterator i; i = sub_table.find(str); return i!=sub_table.end();}string Cvbs_context::ubound(const char* name, int dim){ string str; string arr = name; toUpperCase(arr); arr+="#"; str = get_var(arr.c_str()); size_t pos=string::npos; do { pos = str.find("#",pos); }while(--dim); size_t next = str.find_first_not_of("0123456789",pos+1); if (next!=string::npos) next = next - pos - 1; str=str.substr(pos,next); set_var(".",str.c_str()); return str;}string Cvbs_context::clng(const char* str){ char tmp[32]; sprintf(tmp,"#%d",int_value(str)); return string(tmp);}string Cvbs_context::date(){ time_t t; t=time(&t); struct tm *pt = localtime(&t); char tmp[16]={0}; sprintf(tmp,"#%04d/%02d/%02d",pt->tm_year+1900,pt->tm_mon+1,pt->tm_mday); return string(tmp);}string Cvbs_context::vbtime(){ time_t t; t=time(&t); struct tm *pt = localtime(&t); char tmp[16]={0}; sprintf(tmp,"#%02d:%02d:%02d",pt->tm_hour,pt->tm_min,pt->tm_sec); return string(tmp);}string Cvbs_context::getString(const char* szR,const char* szField, const char* szNum){ string data; if ( strlen(szR) > 1) { data = szR; } else data = get_var("DATARECEIVED"); string num = get_var("DATARECEIVEDNUM"); int n = int_value(num.c_str()); int index = int_value(szNum); if (index < 0 || index > n) return string("$"); size_t found=0; int step = strlen(szField) ; num = szField+1; num += "="; for (int i=0;i<index;i++) { found=data.find(num,found); if (found == string::npos) return string("$"); found+=step; } size_t end; end = data.find(';',found); if (end == string::npos) return string("$"); num = data.substr(found,end-found); data="$"; data+=num; return data;}string Cvbs_context::inStr(const char* szStart,const char* s1,const char* s2, const char* szM){ int n = int_value(szStart); if (strlen(s1)-1 < 1 || strlen(s2)-1 < 1 || s1[0]!='$' || s2[0]!='$') return string("#0"); if (n > (strlen(s1)-1 )) n = strlen(s1)-1; if (int_value(szM) == 0) { char* p = strstr(s1+1+n,s2+1); n = (p)?p-s1:0; } else { string S1(s1+1); string S2(s2+1); toUpperCase(S1); toUpperCase(S2); n = S1.find(S2,n); n = (n==string::npos)?0:n+1; } char tmp[32]={0}; sprintf(tmp,"#%d",n); return string(tmp);}string Cvbs_context::cstr(const char* str){ if (str[0]=='$') return string(str); if (str[0]=='#') { char tmp[32]={0}; sprintf(tmp,"$%s",str+1); return string(tmp); } string r="$"; r+=str; return r;}string Cvbs_context::len(const char* str){ int n=0; if (str[0]=='$' || str[0]=='#') n=strlen(str)-1; char tmp[32]={0}; sprintf(tmp,"#%d",n); return string(tmp);}string Cvbs_context::rnd(const char* sz){ char tmp[32]={0}; int n = int_value(sz); double x; if (n >0) { x = rand(); x = x * 1000; x = x / RAND_MAX; n = (int)round(x); m_rnd=n; sprintf(tmp,"#%d",n); } else if (n==0) { sprintf(tmp,"#%d",m_rnd); } else if (n < 0) { srand(n); x = rand(); x = x*1000; x = x/RAND_MAX; n = (int)round(x); m_rnd=n; sprintf(tmp,"#%d",n); } return string(tmp);}string Cvbs_context::rnd0(void){ return rnd("#1");}void Cvbs_context::init_rnd(const char* sz){ int n=int_value(sz); if (1==n) n++; srand(n);}void Cvbs_context::init_rnd0(void){ srand( (unsigned)time( NULL ) );}string Cvbs_context::vbyear(const char* sz){ string tmp = sz; size_t pos; pos = tmp.find_first_of("/"); if (pos!=string::npos) { tmp = tmp.substr(0,pos); } return clng(tmp.c_str());}string Cvbs_context::vbmonth(const char* sz){ string tmp = sz; size_t pos; pos = tmp.find_first_of("/"); if (pos!=string::npos) { tmp = tmp.substr(pos+1); } pos = tmp.find_first_of("/"); if (pos!=string::npos) { tmp = tmp.substr(0,pos); tmp = string("#")+tmp; } return clng(tmp.c_str());}string Cvbs_context::vbday(const char* sz){ string tmp = sz; size_t pos; pos = tmp.find_first_of("/"); if (pos!=string::npos) { tmp = tmp.substr(pos+1); } pos = tmp.find_first_of("/"); if (pos!=string::npos) { tmp = tmp.substr(pos+1); tmp = string("#")+tmp; } return clng(tmp.c_str());}string Cvbs_context::vbweekday(const char* sz){ struct tm n={0}; n.tm_year = int_value(vbyear(sz).c_str())-1900; n.tm_mon = int_value(vbmonth(sz).c_str())-1; n.tm_mday = int_value(vbday(sz).c_str()); time_t t = mktime(&n); char buf[8]={0}; buf[0]='#'; sprintf(buf+1,"%d",n.tm_wday); string tmp = buf; return tmp;}string Cvbs_context::vbhour(const char* sz){ string tmp = sz; size_t pos; pos = tmp.find_first_of(":"); if (pos!=string::npos) { tmp = tmp.substr(0,pos); } return clng(tmp.c_str());}string Cvbs_context::vbminute(const char* sz){ string tmp = sz; size_t pos; pos = tmp.find_first_of(":"); if (pos!=string::npos) { tmp = tmp.substr(pos+1); } pos = tmp.find_first_of(":"); if (pos!=string::npos) { tmp = tmp.substr(0,pos); tmp = string("#")+tmp; } return clng(tmp.c_str());}string Cvbs_context::vbsecond(const char* sz){ string tmp = sz; size_t pos; pos = tmp.find_first_of(":"); if (pos!=string::npos) { tmp = tmp.substr(pos+1); } pos = tmp.find_first_of(":"); if (pos!=string::npos) { tmp = tmp.substr(pos+1); tmp = string("#")+tmp; } return clng(tmp.c_str());}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -