From 1028418c23bfaba2ce439281684c559fb89c3ed9 Mon Sep 17 00:00:00 2001 From: Ren TengLong Date: Sun, 25 Nov 2018 20:07:06 +0800 Subject: [PATCH] First commit --- .DS_Store | Bin 0 -> 6148 bytes change.h | 71 +++++++++++++ checksys.h | 202 +++++++++++++++++++++++++++++++++++++ convertmain.h | 46 +++++++++ load.h | 265 ++++++++++++++++++++++++++++++++++++++++++++++++ loaddata.h | 90 +++++++++++++++++ logo.h | 27 +++++ main.cpp | 189 +++++++++++++++++++++++++++++++++++ manual.md | 177 ++++++++++++++++++++++++++++++++ settings.ini | 6 ++ system.h | 272 ++++++++++++++++++++++++++++++++++++++++++++++++++ varibles.h | 26 +++++ writeset.h | 44 ++++++++ 13 files changed, 1415 insertions(+) create mode 100644 .DS_Store create mode 100644 change.h create mode 100644 checksys.h create mode 100644 convertmain.h create mode 100644 load.h create mode 100644 loaddata.h create mode 100644 logo.h create mode 100644 main.cpp create mode 100644 manual.md create mode 100644 settings.ini create mode 100644 system.h create mode 100644 varibles.h create mode 100644 writeset.h diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c57803906e327194c16308a573d50c582c05508b GIT binary patch literal 6148 zcmeHKyG{c!5FA4UM|g-1$}6dmsA-On6i7e;KLB}}WbaY-SE6`WC- z1JrRs+~o-En4wu0S8t8$)#1n!)xWE&Co9p9d5+mck&>|16S9YMvX^y>v$. + +void changesettings() +{ + while(true) + { + clearall(); + string cbef="[?ȴ??Ӧ]?ѡ?????ĵ??\n________________________________________\n"; + string sel1="????:"+exename; + string sel2="?????ʼ??:"+itos(from); + string sel3="????????:"+itos(to); + string sel4="?????:"+inname; + string sel5="??????:"+outname; + int select=arrowselect(cbef,"________________________________________",6,1,sel1.c_str(),2,sel2.c_str(),2,sel3.c_str(),2,sel4.c_str(),3,sel5.c_str(),4,"[??????"); + announcedata(); + if(select==1) + { + bool curok=false; + string temp; + while(!curok) curok=loadexename(temp); + } + if(select==2) + { + bool curok=false; + string temp; + while(true) + { + while(true) + { + curok=false; + while(!curok) curok=loadfrom(temp); + curok=false; + while(!curok) curok=loadto(temp); + if(from>to) + { + _err("[?????ʼ????ڽ????!\n"); + toset=false; + fromset=false; + continue; + } + break; + } + curok=false; + while(!curok) curok=loadinname(temp); + if(!infilecheck(inname,from,to,true)) continue; + break; + } + } + if(select==3) + { + bool curok=false; + string temp; + while(!curok||!checkallset(true)) curok=loadoutname(temp); + } + if(select==4) return; + } +} diff --git a/checksys.h b/checksys.h new file mode 100644 index 0000000..cf712bf --- /dev/null +++ b/checksys.h @@ -0,0 +1,202 @@ +// Copyright (C) 2018 AdemJensen +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License as +// published by the Free Software Foundation; either version 3, +// or (at your option) any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +bool checkexename(string s,bool show) +{ + if(show) cout<<"[Ϣ]ڼexeϷ..."; + int len=s.size(); + if(s[len-4]!='.'||s[len-3]!='e'||s[len-2]!='x'||s[len-1]!='e') + { + cline(); + if(show) _err("[]ָļexeļ!\n"); + return false; + } + if(!exist(s)) + { + cline(); + if(show) _err("[]޷ҵָexeļ!\n"); + return false; + } + if(s==currentexe) + { + cline(); + if(show) _err("[]ָתΪĿexe!\n"); + return false; + } + string opera=s+" -anti-reopen-mode"; + cline();_warn("[ע]exeҪexeб\n"); + + WinExec(opera.c_str(),SW_SHOW); + + Sleep(500); + opera="taskkill /IM "+s; + opera+=" /f"; + system(opera.c_str()); + clearall(); + + if(!exist("std.out")) + { + cline(); + if(show) _err("[]ָexeδȷļ!\n"); + return false; + } + remove("std.out"); + //remove("std.in"); + cline(); + return true; +} + +bool checkrule(string s,bool show) +{ + int len=s.size(); + int pos; + bool ok=true; + bool havenes=false; + for(int i=0;i. + +bool mainconversion(bool show) +{ + if(show) clearall(); + string outfilename; + string infilename; + announcedata(); + for(int i=from;i<=to;i++) + { + infilename=getfilename(inname,i); + outfilename=getfilename(outname,i); + if(show) cout<<"[Ϣ]ת: "< "< "),_err(outfilename),_err(":\n"); + if(show) _err("[]ṩijʱ!ֵ:"),_err(result),_err('\n'); + if(show) _err("[]ȡ!\n"); + remove("std.in");remove("std.out"); + return false; + } + CopyFile("std.out",outfilename.c_str(),false); + remove("std.in");remove("std.out"); + if(show) cline(); + } + if(show) cline(); + return true; +} diff --git a/load.h b/load.h new file mode 100644 index 0000000..978e6bf --- /dev/null +++ b/load.h @@ -0,0 +1,265 @@ +// Copyright (C) 2018 AdemJensen +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License as +// published by the Free Software Foundation; either version 3, +// or (at your option) any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +bool Manual_load(bool show) +{ + if(show) clearall(); + if(show) cout<<"[Ϣ]ڽֶ:"<to) + { + if(show) _err("[]ʼŴڽ!\n"); + toset=false; + fromset=false; + continue; + } + break; + } + curok=false; + while(!curok) curok=loadinname(temp); + if(!infilecheck(inname,from,to,true)) continue; + break; + } + curok=false; + while(!curok||!checkallset(true)) curok=loadoutname(temp); + if(show) _ok("[Ϣ]ȫ!\n"); + if(show) cout<<"[ȴӦ]"<to) + { + if(show) _err("[]ʼŴڽ!\n"); + ok=false; + } + if(!infilecheck(inname,from,to,show)) ok=false; + if(checkallset(show)&&ok) + { + if(show) _ok("[Ϣ]ȫȡ!\n"); + if(show) cout<<"[ȴӦ]"< __filelist.txt"); + fstream list; + if(!openstream(list,"__filelist.txt","in")) + { + if(show) _err("[]޷ļ!\n"); + system("del __filelist.txt"); + if(show) pause(); + return false; + } + int exenum=0; + string curline; + while(getline(list,curline)) + { + if((int)curline.find(".exe")!=-1) + { + exenum++; + } + } + list.close(); + if(exenum>=4) + { + if(show) _warn("[]ļ"),_warn(exenum),_warn("exeļϵͳΧ\n"); + if(show) _warn("[]ڰȫǣԶѱܾ\n"); + if(show) _err("[]Զʧ!볢ģʽ!\n"); + system("del __filelist.txt"); + if(show) pause(); + return false; + } + int leastinserial=9999; + openstream(list,"__filelist.txt","in"); + while(getline(list,curline)) + { + if((int)curline.find(".exe")!=-1) + { + if(checkexename(curline,false)&&!exenameset) + { + exename=curline; + exenameset=true; + if(show) _ok("[Ϣ]ҵexeļ:"),_ok(exename),_ok('\n'); + } + } + else + { + int len=curline.size(); + int dpos=0; + string anawhy; + for(int i=0;i. + + +bool loadexename(string &temp) +{ + cout<<":"; + getline(cin,temp); + temp=nfaspace(temp); + if(checkexename(temp,true)) + { + exenameset=true; + exename=temp; + return true; + } + return false; +} +bool loadfrom(string &temp) +{ + fromset=false; + from=9999; + cout<<"ļʼ:"; + getline(cin,temp); + temp=nfaspace(temp); + if(checknum(temp,true)) + { + fromset=true; + from=stoi(temp); + return true; + } + return false; +} +bool loadto(string &temp) +{ + toset=false; + to=0; + cout<<"ļ:"; + getline(cin,temp); + temp=nfaspace(temp); + if(checknum(temp,true)) + { + toset=true; + to=stoi(temp); + return true; + } + return false; +} +bool loadinname(string &temp) +{ + innameset=false; + inname=""; + cout<<"ļ:"; + getline(cin,temp); + temp=nfaspace(temp); + if(checkrule(temp,true)) + { + innameset=true; + inname=temp; + return true; + } + return false; +} +bool loadoutname(string &temp) +{ + outnameset=false; + outname=""; + cout<<"ļ:"; + getline(cin,temp); + temp=nfaspace(temp); + if(checkrule(temp,true)) + { + outnameset=true; + outname=temp; + return true; + } + return false; +} diff --git a/logo.h b/logo.h new file mode 100644 index 0000000..a98af65 --- /dev/null +++ b/logo.h @@ -0,0 +1,27 @@ +// Copyright (C) 2018 AdemJensen +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License as +// published by the Free Software Foundation; either version 3, +// or (at your option) any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +void LOGOout() +{ + system("title ת S2"); + cout<<"**********************************************************************************"<. + +#include +#include +#include +#include +#include +#include +#include +#include +using namespace std; + +string currentexe; + +#include"varibles.h" +#include"logo.h" +#include"system.h" +#include"checksys.h" +#include"loaddata.h" +#include"load.h" +#include"change.h" +#include"writeset.h" +#include"convertmain.h" + +int main(int argc,char *argv[]) +{ + cleardata(); + string stemp=argv[0]; + int slen=stemp.size()-1; + for(int i=slen;i>=0&&stemp[i]!='\\';i--) currentexe=stemp[i]+currentexe; + if(argc>1) + { + string option=argv[1]; + if(option=="-anti-reopen-mode") + { + /*fstream out; + openstream(out,"std.out","out"); + out<<"DOUBLE_CHECK_SYS"; + out.close();*/ + return 1; + } + if(option=="-quick-mode") + { + if(File_load(false,false)) + { + mainconversion(false); + cline();cout<<"[Ϣ]!"<. + +enum Color{red,blue,green,white,black,yellow}; +void pause() +{ + _getch(); +} +void clearall() +{ + system("cls"); + + cout<<"ת S2"< +void _warn(T s) +{ + changecolor(black,yellow); + cout< +void _ok(T s) +{ + changecolor(black,green); + cout< +void _err(T s) +{ + changecolor(black,red); + cout<maxium) now=1; + } + if(press==3) + { + clearall(); + return now; + } + if(press==4) + { + clearall(); + return 0; + } + clearall(); + } + +} +bool openstream(fstream &targetstream,string filename,string way) +{ + if(way=="in") targetstream.open(filename.c_str(),ios::in); + else targetstream.open(filename.c_str(),ios::out); + return targetstream.is_open(); +} +bool exist(string filename) +{ + ifstream checktemp; + checktemp.open(filename.c_str(),ios::in); + bool result=checktemp.is_open(); + checktemp.close(); + return result; +} +string itos(int a) +{ + string ans=""; + if(a==0) + { + ans="0"; + return ans; + } + while(a!=0) + { + char add=a%10+'0'; + ans=add+ans; + a=a/10; + } + return ans; +} +string exract(string s,int l,int r) +{ + if(l>r) return ""; + string ans; + for(int i=l;i<=r;i++) + { + ans+=s[i]; + } + return ans; +} +int stoi(string s) +{ + if(s.size()==0) return 0; + char str[1005]; + strcpy(str,s.c_str()); + return atoi(str); +} +void cleardata() +{ + exename="";// + inname="";//ļ + outname="";//ļ + from=9999;//ļʼ + to=0;//ļ + exenameset=false;// + innameset=false;//ļ + outnameset=false;//ļ + fromset=false;//ļʼ + toset=false;//ļ +} +void announcedata() +{ + cout<<"________________settings________________"<. + +string exename;// +string inname;//ļ +string outname;//ļ +int from;//ļʼ +int to;//ļ +bool exenameset;// +bool innameset;//ļ +bool outnameset;//ļ +bool fromset;//ļʼ +bool toset;//ļ diff --git a/writeset.h b/writeset.h new file mode 100644 index 0000000..792e5db --- /dev/null +++ b/writeset.h @@ -0,0 +1,44 @@ +// Copyright (C) 2018 AdemJensen +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License as +// published by the Free Software Foundation; either version 3, +// or (at your option) any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +void writesettings() +{ + int selection=keyboard("Ƿ񽫵ǰд\"settings.ini\"? (Esc=,Enter=)",false,2,27,13); + cline(); + if(selection==2) + { + fstream settings; + if(!openstream(settings,"settings.ini","out")) + { + _err("[]޷\"settings.ini\"!дʧ!\n"); + cout<<"[ȴӦ]"<