- 浏览: 24695 次
- 性别:
- 来自: 东莞
最新评论
-
flythink:
oledb是不是更容易弄一些? 纯猜测
MS ODBC for DMD 2.053 -
hqs7636:
8错,继续完善一下。。。
MS ODBC for DMD 2.053 -
rocex:
lz的这个工具好用,可以随时在1.x和2.x上切换。
DEx ...
D2/Phobos与D2/Tango一键切换编译环境设置 -
Colorful:
链接是这个 : http://code.google.com/ ...
Windows D编程类封装初步学习并请教 -
betty_betty2008:
哥们:链接打不开
Windows D编程类封装初步学习并请教
笔记要点:
1。个人工具包samsTools 工具之一PromptMessage,方法:
pause():Console 下暂停命令;
showMessage:MS MessageBox/MessageBoxW 之D改写;
char askForChar(string msg=" ")从控制台读取用户输入并返回一字符串;
T askFor!(T)(string msg=" ") 从控制台读取用户输入并返回指定T类型值
1Console嵌套菜单的制作;
2。数据库OO数据类Sales;
3。std.stream顺序文件和随机文件读写操作。
PromptMessage.d:
ledgerSys.d:
testcase.d //main module
数据文件SALES.DAT样板:
07/13/2009 , 0.50 , 0.33 , 89.45 , 0.99 , 0.70
07/02/2009 , 2345.67 , 12345.67 , 90.50 , 100.00 , 890.00
07/09/2009 , 123.55 , 1234.77 , 1908.00 , 345.99 , 1123.45
07/04/2009 , 234.56 , 98.09 , 4567.89 , 20000.00 , 234.00
07/05/2009 , 345.05 , 34.50 , 1234.56 , 23456.78 , 34.90
07/12/2009 , 2345.67 , 8976.00 , 98.00 , 987.50 , 34.00
1。个人工具包samsTools 工具之一PromptMessage,方法:
pause():Console 下暂停命令;
showMessage:MS MessageBox/MessageBoxW 之D改写;
char askForChar(string msg=" ")从控制台读取用户输入并返回一字符串;
T askFor!(T)(string msg=" ") 从控制台读取用户输入并返回指定T类型值
1Console嵌套菜单的制作;
2。数据库OO数据类Sales;
3。std.stream顺序文件和随机文件读写操作。
PromptMessage.d:
module samsTools.PromptMessage; import std.c.windows.windows; import std.stdio; import std.string; import std.conv; enum MsgboxBtn { OK = 0x00000000, OKCancel = 0x00000001, AbortRetryIgnore = 0x00000002, YesNoCancel = 0x00000003, YesNo = 0x00000004, RetryCancel = 0x00000005, Default1 = 0x00000000, Default2 = 0x00000100, Default3 = 0x00000200, Default4 = 0x00000300 } enum MsgboxIcon { Hand = 0x00000010, Question = 0x00000020, Exclamation = 0x00000030, Asterisk = 0x00000040, //MB_USERICON = 0x00000080, Warning = MB_ICONEXCLAMATION, Error = MB_ICONHAND, Information = MB_ICONASTERISK, Stop = MB_ICONHAND } enum MagboxDefaultButton { Default1 = 0x00000000, Default2 = 0x00000100, Default3 = 0x00000200, Default4 = 0x00000300 } enum Misc { MB_APPLMODAL = 0x00000000, MB_SYSTEMMODAL = 0x00001000, MB_TASKMODAL = 0x00002000, MB_HELP = 0x00004000, // Help Button MB_NOFOCUS = 0x00008000, MB_SETFOREGROUND = 0x00010000, MB_DEFAULT_DESKTOP_ONLY = 0x00020000, MB_TOPMOST = 0x00040000, MB_RIGHT = 0x00080000, MB_RTLREADING = 0x00100000, MB_TYPEMASK = 0x0000000F, MB_ICONMASK = 0x000000F0, MB_DEFMASK = 0x00000F00, MB_MODEMASK = 0x00003000, MB_MISCMASK = 0x0000C000 } extern(Windows){int MessageBoxW(HWND,LPCWSTR,LPCWSTR,UINT);} int ShowMessage(in wstring msg,in wstring caption=r"Application", int style=MB_OK|MB_ICONINFORMATION) { return MessageBoxW(null,(msg~"\000").ptr,(caption~"\000").ptr,style); } alias ShowMessage showMessage; void pause(string msg=r"Press any key to continue...") { writefln("\n\n*******************************************************"); writefln("* %s *",msg); writefln("*******************************************************"); char[] input; readln(input); } char askForChar(string msg="") { string str="Please enter a char:"; write(msg.length==0?str:msg); char[] input; readln(input); char[] output=chomp(input); return (output.length>0)?output[0]:'0'; } T askFor(T)(string msg="") { static if(is(typeof(T[])==char[]) ||is(typeof(T[])==wchar[]) ||is(typeof(T[])==dchar[]) ||is(T==string)) { string str="a string:"; } /* else static if(is(typeof(T)==char) ||is(typeof(T)==wchar) ||is(typeof(T)==dchar)) { string str="a char:"; return to!(T)[0]; } */ else static if(is(T==int)) string str="Pleaes enter an integer:"; else static if(is(T==float)) string str="Pleaes enter a floating point number:"; else static if(is(T==double)) string str="Pleaes enter a double precision point number:"; else static if(is(T==ushort)||is(T==short)) string str="Pleaes enter a short integer:"; else static if(is(T==ulong)||is(T==long)) string str="Pleaes enter a very very long integer:"; else { //Stdout.format("Please enter a number:").flush: string str="Pleaes enter a number or string:"; } write(msg.length==0?str:msg); //Stdout.format("Please enter {}:",str).flush; try { char[] input; readln(input); return to!(T)(chomp(input)); } catch(Exception msg) { //Stdout("Invalid input").newline; writefln("Invalid input"); // return T.init; assert(0); } //assert(0); }
ledgerSys.d:
module ledgerSys; import std.stdio; import std.string; import std.conv; import std.file; import std.stream; import samsTools.PromptMessage; /* string askforInputString(string msg) { write(msg); char[] input; readln(input); return cast(string)chomp(input); } */ class Company { private: string companyName, companyOwner, companyAddress, companyCity, companyState, companyZip; public: //Property CompanyName //getter string CompanyName() { return companyName; } //setter string CompanyName(string companyName) { return this.companyName=companyName; } //Property CompanyOwner: //getter string CompanyOwner() { return companyOwner; } //setter string CompanyOwner(string companyOwner) { return this.companyOwner=companyOwner; } string CompanyAddress() { return companyAddress; } string CompanyAddress(string companyAddress) { return this.companyAddress=companyAddress; } string CompanyCity() { return companyCity; } string CompanyCity(string companyCity) { return this.companyCity=companyCity; } string CompanyState() { return companyState; } string CompanyState(string companyState) { return this.companyState=companyState; } string CompanyZip() { return companyZip; } string CompanyZip(string companyZip) { return this.companyZip=companyZip; } public: /* string askFor!(string)(string msg) { write(msg); char[] input; readln(input); return cast(string)chomp(input); } */ void inputName() { /* write("What's your company name? "); char[] input; readln(input); CompanyName=cast(string)chomp(input); */ //CompanyName=askFor!(string)("What's your company's name? "); CompanyName=askFor!(string)("What's your company's name?"); } string outputName() { return CompanyName; } void inputOwner() { /* write("Who is the company's owner?"); char[] input; readln(input); CompanyOwner=cast(string)chomp(input); */ //CompanyOwner=askFor!(string)("Who is the company's owner? "); CompanyOwner=askFor!(string)("Who is the company's owner? "); } void inputAddress() { /* write("What's the company's address?"); readln(companyAddress); */ //CompanyAddress=askFor!(string)("What's the company's address? "); CompanyAddress=askFor!(string)("What's the company's address? "); } void inputCity() { /* write("What's the company's city?"); readln(companyCity); */ //CompanyCity=askFor!(string)("What's the company's city? "); CompanyCity=askFor!(string)("What's the company's city? "); } void inputState() { /* write("What's the company's state?"); readln(companyState); */ //CompanyState=askFor!(string)("What's the company's state? "); CompanyState=askFor!(string)("What's the company's state? "); } void inputZip() { /* write("What's the company's zip?"); readln(companyZip); */ //CompanyZip=askFor!(string)("What's the company's zip? "); CompanyZip=askFor!(string)("What's the company's zip? "); } string CompanyInfo() { string info= "Company: "~CompanyName~"\n" ~"Owner: "~CompanyOwner~"\n" ~"Address: "~CompanyAddress~"\n" ~"City: "~CompanyCity~"\n" ~"State: "~CompanyState~"\n" ~"Zip: "~CompanyZip~"\n"; return info; } void outputCompanyInfo() { writefln(CompanyInfo); } string toString() { return CompanyInfo; } } class CDate { private: int month; int day; int year; public: this() { this(1,1,1000); } this(int month,int day,int year) { Month=month; Day=day; Year=year; } int Month() { return month; } int Month(int month) { return this.month=month; } int Day() { return day; } int Day(int day) { return this.day=day; } int Year() { return year; } int Year(int year) { return this.year=year; } public: void inputMonth() { month=askFor!(int)("What's the month? "); } void inputDay() { day=askFor!(int)("What's the day? "); } void inputYear() { year=askFor!(int)("What's the year? "); } int outputMonth() { return Month; } int outputDay() { return Day; } int outputYear() { return Year; } string dateInfo() { string strMonth=month<10?"0"~to!string(month):to!string(month); string strDay=day<10?"0"~to!string(day):to!string(day); string strYear=year<10?"200"~to!string(year):year<100?"20"~to!string(year):to!string(year); //return to!string(month)~"/"~to!string(day)~"/"~to!string(year); return strMonth~"/"~strDay~"/"~strYear; } string toString() { return dateInfo; } ref CDate parse(string strDate) { string[] result=split(strDate,"/"); //CDate temp=new CDate; this.month=to!(int)(result[0]); this.day=to!(int)(result[1]); this.year=to!(int)(result[2]); return this; } } class Sales:CDate { public static const string lineSep=" ,"; private: float[5] dailySales; float getDailySales() { char[] input; readln(input); return to!(float)(chomp(input)); } public: this() { super(); } void inputSalesAmounts() { for(int gl=3;gl<=7;++gl) { char resp; char ch; char[] input; do { writef("What's the sales for GL #%d?",gl); readln(input); dailySales[gl-3]=to!(float)(chomp(input)); write("Correct?(Y/N) "); //resp=' '; readln(input); resp=chomp(input)[0]; }while((resp!='Y') && (resp!='y')); } } void modifySalesAmount(int number) { writefln("The current for GL account #%d is:%f", number,dailySales[number]); write("What shoud the amount be? "); dailySales[number]=getDailySales; } void showSalesAmounts() { float ttl_sales=0.00; for(int gl=3;gl<=7;++gl) { float amout=dailySales[gl-3]; writefln("\nSales GL #%d :%10.2f", gl,amout); ttl_sales+=amout; } writeln("--------------------------------------"); writefln("Total Sales %10.2f",ttl_sales); } float showSalesAmount(int number) { return dailySales[number]; } float[] DailySales() { return dailySales; } float[] DailySales(float[] dailySales) { return this.dailySales=dailySales; } string toString() { string result=""; result~=super.toString; foreach(amount;dailySales) result~=lineSep~std.string.format("%10.2f",amount/*to!string(amount*/); return result; } } void mainMenu() { char menu_1='0'; //char ch; do { menu_1='0'; clr_scrn; char[] input; write(" Main Menu\n" " 1. Start New Client\n" " 2. Expense Ledger Menu\n" " 3. Sales Ledger Menu\n" " 4. Print P&L\n" " 5. End of Year Processing\n" " 6. Exit\n" " which? "); readln(input); menu_1=chomp(input)[0]; clr_scrn; switch(menu_1) { case '1': startClient; menu_1='0'; break; case '2': //expenseLedger; menu_1='0'; break; case '3': salesLedger; menu_1='0'; break; case '4': //PandL; menu_1='0'; break; case '5': //endofYear; menu_1='0'; break; case '6'://exit program menu_1='6'; break; default: menu_1='0'; break; } }while(menu_1=='0'); } void clr_scrn() { for(int i=0;i<25;++i) writeln("\n"); } void salesLedger() { char menu_3='0'; char[] input; do { menu_3=0; clr_scrn; write( " Sales Ledger Menu\n" " 1. Enter Sales\n" " 2. Change Sales\n" " 3. Print Sales\n" " 4. End of Month Processing for Sales\n" " 5. Return to Main Menu\n" " which? "); readln(input); menu_3=chomp(input)[0]; switch(menu_3) { case '1': inputSales; menu_3='0'; break; case '2': editSales; menu_3='0'; break; case '3': printSales; menu_3='0'; break; case '4': eomSales; menu_3='0'; break; case '5': menu_3='5'; break; default: menu_3='0'; break; } }while(menu_3=='0'); } void inputSales() { char resp=' '; clr_scrn; Sales today=new Sales; std.stream.File outfile=new std.stream.File; outfile.open("SALES.DAT",FileMode.In|FileMode.Out|FileMode.Append); do { clr_scrn; today.inputDay; today.inputMonth; today.inputYear; today.inputSalesAmounts; outfile.writeLine(today.toString); //outfile.writeExact(cast(const void*)&today,today.sizeof); write("Enter another day?(Y/N) "); resp=' '; char[] input; readln(input); resp=chomp(input)[0]; }while(resp=='Y'||resp=='y'); outfile.close; } void printSales() { //auto records=slurp!(string,int,int,int)("SALES.DAT","%s %s %s %s %s %s"); std.stream.File output=new std.stream.File; output.open("SALES.DAT",FileMode.In); while(! output.eof) { string sofarRead=cast(string)output.readLine; string[] contents=split(sofarRead,Sales.lineSep); Sales sales=new Sales; sales.parse(contents[0]); float[] theDailySales; for(int i=1;i<contents.length;++i) theDailySales~= to!(float)(strip(contents[i])); sales.DailySales=theDailySales; /* Sales sales=new Sales; output.readExact(cast(void*)sales,sales.sizeof); */ writeln(sales.toString); } output.close; } void editSales() { version(Windows) { int caretLength="\b\n".length; } else { int caretLength="\n".length; } Sales today=new Sales; ulong last_record; long post; clr_scrn; int record_number;//record want to find & edit std.stream.File output=new std.stream.File; output.open("SALES.DAT",FileMode.Out|FileMode.In); if(!output.readable) writefln("The file is unreadable"); if(!output.writeable) writefln("The file is unwriteable"); if(!output.seekable) writefln("The file is unseekable"); if(!output.isOpen) writefln("The file is not open."); if(!output.eof) writefln("The file is not at EOF."); output.seekSet(0); int bytes_per_line=output.readLine.length+caretLength; writefln("The length of each line is %d bytes.",bytes_per_line); ulong end_position=output.seekEnd(0); //output.close; last_record=end_position/bytes_per_line; writefln("The length of the file is %d bytes.",end_position); writefln("Total records:%d",last_record); if(last_record==0) { writefln("No records."); //pause; return ; } char resp=' '; do { do { record_number=askFor!(int)("Which record do you want to see?"); if(record_number>last_record||record_number<1) writefln("Beyond end of data.Pick another record."); }while( record_number>last_record || record_number<1); clr_scrn; writefln("You want to see record #%d",record_number); //now you specify a valid record #,go ahead: post=(record_number-1)* bytes_per_line; writefln("Current position:%d",output.position); output.seekSet(post); writefln("Current position:%d",output.position); writefln(output.readLine); writefln("Now will replace with new record:"); Sales newday=new Sales; newday.inputDay; newday.inputMonth; newday.inputYear; newday.inputSalesAmounts; output.seekSet(post); output.writeLine(newday.toString); writefln("Current position:%d",output.position); writefln("Record changed."); resp=askForChar("Do you want to edit another record? (Y/N)"); clr_scrn; }while(resp=='y'||resp=='Y'); output.close; //writefln("All Done."); } void eomSales() { } void startClient() { }
testcase.d //main module
module testcase; import ledgerSys; import std.stdio; import std.stream; import samsTools.PromptMessage; void testCompany() { Company IBM=new Company; IBM.CompanyName="IBM"; IBM.CompanyOwner="Liu Chuanzhi"; IBM.CompanyAddress="Beijing,China"; IBM.CompanyCity="Beijing"; IBM.CompanyState="P.R.China"; IBM.CompanyZip="100082"; IBM.outputCompanyInfo; IBM.CompanyCity=askFor!(string)("What's your favorite city then?"); IBM.CompanyState=askFor!(string)("What's your company State? "); //IBM.outputCompanyInfo; writeln(IBM); IBM.inputAddress; writeln(IBM); } void testDate() { CDate today=new CDate; writeln(today); today.Month=7; today.Day=9; today.Year=2009; writeln(today); Sales sales=new Sales; sales.Day=today.Day; sales.Month=today.Month; sales.Year=today.Year; sales.inputSalesAmounts; writeln(sales); } void testParseDate() { CDate temp=new CDate; temp.parse("07/09/2009"); writeln(temp); writefln("Month=%d;Day=%d;Year=%d",temp.Month,temp.Day,temp.Year); } void testRecord() { version(Windows) { int caretLength="\b\n".length; } else { int caretLength="\n".length; } Sales today=new Sales; ulong last_record; long post; int record_number;//record want to find & edit std.stream.File output=new std.stream.File; output.open("SALES.DAT",FileMode.Out|FileMode.In); if(!output.readable) writefln("The file is unreadable"); if(!output.writeable) writefln("The file is unwriteable"); if(!output.seekable) writefln("The file is unseekable"); if(!output.isOpen) writefln("The file is not open."); if(!output.eof) writefln("The file is not at EOF."); output.seekSet(0); int bytes_per_line=output.readLine.length+caretLength; writefln("The length of each line is %d bytes.",bytes_per_line); ulong end_position=output.seekEnd(0); //output.close; last_record=end_position/bytes_per_line; writefln("The length of the file is %d bytes.",end_position); writefln("Total records:%d",last_record); if(last_record==0) { writefln("No records."); //pause; return ; } char resp=' '; do { do { record_number=askFor!(int)("Which record do you want to see?"); if(record_number>last_record||record_number<1) writefln("Beyond end of data.Pick another record."); }while( record_number>last_record || record_number<1); writefln("You want to see record #%d",record_number); //now you specify a valid record #,go ahead: post=(record_number-1)* bytes_per_line; writefln("Current position:%d",output.position); output.seekSet(post); writefln("Current position:%d",output.position); writefln(output.readLine); writefln("Now will replace with new record:"); Sales newday=new Sales; newday.inputDay; newday.inputMonth; newday.inputYear; newday.inputSalesAmounts; output.seekSet(post); output.writeLine(newday.toString); writefln("Current position:%d",output.position); resp=askForChar("Do you want to edit another record? (Y/N)"); }while(resp=='y'||resp=='Y'); output.close; writefln("All Done."); } void testinput() { double input=askFor!(double); writefln("OK"); char ch=askForChar("Continue?(N/Y)"); writefln("OK"); writefln("%d","\b\n".length); } int main(string[] args) { //showMessage("Hello start..."); //testCompany; //testDate; //testParseDate; mainMenu; //Sales sales; //writefln("%d",sales.sizeof); //writefln("%d",sizeof(sales)); //testRecord; //char input; //readln(input); //testinput; pause; return 0; }
数据文件SALES.DAT样板:
07/13/2009 , 0.50 , 0.33 , 89.45 , 0.99 , 0.70
07/02/2009 , 2345.67 , 12345.67 , 90.50 , 100.00 , 890.00
07/09/2009 , 123.55 , 1234.77 , 1908.00 , 345.99 , 1123.45
07/04/2009 , 234.56 , 98.09 , 4567.89 , 20000.00 , 234.00
07/05/2009 , 345.05 , 34.50 , 1234.56 , 23456.78 , 34.90
07/12/2009 , 2345.67 , 8976.00 , 98.00 , 987.50 , 34.00
发表评论
-
D2 下win32 api 中文框架备忘
2011-07-28 17:49 1041隔一段时间就忘了怎么在D2下win32 SDK框架里使用中文, ... -
MS ODBC for DMD 2.053
2011-05-20 16:49 1217东拼西凑,终于在dmd2.053下成功连接上了ODBC 数据库 ... -
截屏、闪屏(Timer)、输入窗口--DFL for D2.053
2011-05-16 17:41 1271这个小练习用D2.053+DFL完成了以下功能: 1.截屏(C ... -
SDK写的一个画树(花)程序
2009-11-23 17:53 1077[img]C:\Documents and Settings\ ... -
json for D2.034
2009-10-13 19:54 718作者:Jeremie Pelletier 链接: [url] ... -
D2 中使用VC的Windows资源文件
2009-09-15 15:26 1225终于试成功了。总结一下: 一.在*.RC里包含window ... -
windows vfw.lib
2009-09-07 20:06 1327上传到这里,因为有时候改变工作地点后另一台机上没有。:P -
Windows D编程类封装初步学习并请教
2009-09-01 18:37 1212首先把要请教的问题写在最顶部: 1。事件最好的包装方法是怎样的 ... -
再学SQLite3 API
2009-08-21 17:48 2237这次进一步看了看SQLigte3 的API,不用上次写的类包装 ... -
"D"iving Into the D Programming Language
2009-08-04 16:23 1584"D"iving Into the D P ... -
练习:boost.timer 转D2
2009-07-21 12:32 1322中间解决了好几个问题,尚有几个问题没解决,已在NG上提问。备忘 ... -
Sqlite3 C++类库Sharplite 转D
2009-07-17 16:32 1658这是一份作业,因为所有创作的部分都是前人的。 材料:1.sql ... -
D2 反射和defineEum! 练习
2009-07-16 14:21 867备忘: module DioApp; imp ... -
DFL for DMD2.031
2009-07-10 16:33 906从NG里要到的,俺测过了,OK 的啦. 原贴原下载地址链接: ... -
D2/Phobos与D2/Tango一键切换编译环境设置
2009-05-08 18:01 1167一。适合谁: 象俺一样,反反复复搭不起D编译环境的小菜 二。不 ... -
(翻译)Phobos 2.029 R部 std.random
2009-04-27 14:58 1317std.random ... -
(翻译)Phobos 2.029 P部 std.process
2009-04-23 11:57 1158std.process ... -
(翻译)Phobos 2.029 P部 std.path
2009-04-23 10:52 1318std.path ...
相关推荐
在压缩包子文件的文件名称列表中,"IEEE Draft Std. P1857.9-D2:2021 Draft Std. for Standard for Immersive Visual Content Coding - 完整英文电子版(118页).pdf" 提示我们有一个详细的文档,包含了118页的英文...
首先,我们要明白`D2Common.dll.exports.h`文件的作用。这是一个头文件,通常包含了一系列函数声明,用于指导程序员如何正确地调用`D2Common.dll`中的函数。通过分析这个头文件,我们可以了解到游戏内部的函数调用...
apktool (反编译apk得到资源文件res目录下的layout/xml....) dex2jar (反编译classes.dex文件,得到用于jd-gui工具查看的.jar文件) jd-gui (反编译.class文件,得到java文件,如果有混淆,得到的java文件是...
解决com.googlecode.d2j.DexException: not support version。其实就是替换了个dex2jar的包。安卓N之后用新的dex2jar...用文本编辑器打开dex,对 就是以文本形式打开dex文件,修改对应的那个数字,问题解决!!亲测!!
`d2server.dll`是游戏服务器的核心库,`D2GS.exe`是游戏服务器的执行文件,而`D2GSSVC.exe`可能是一个服务启动程序,使得服务器能够以后台服务的方式运行,确保稳定性。 6. **d2server.ini**:这是服务器的配置文件...
在IT领域中,`.zip`是一种常见的文件压缩格式,用于将多个文件或文件夹打包成一个更小的文件,便于存储、传输和分发。 【描述】描述内容为空,因此我们无法获得关于文件的具体内容或用途的详细信息。通常,描述会...
《IEEE Draft Std. P1857.10-D2:2021 Draft Standard for Third Generation Video Coding》是国际电气与电子工程师协会(IEEE)发布的一个关于第三代视频编码技术的2021年草案标准。这个标准旨在提高视频编码效率,...
标题中的"D2XXUnit.pas"表明这是一个Delphi编程语言中的单元(unit)文件,通常在Delphi项目中用于组织和共享代码。这个文件可能是针对FTD2XX.dll的接口定义,FTD2XX.dll是一个由FTDI公司提供的动态链接库,用于与...
简单的usb转串口通信,内含D2xx.jar。能识别usb通信设备,打开设置串口,并正常通信
动手学深度学习 d2l文件
d2d1.dll
【文件】"d2hackmap.cfg" 是该工具的配置文件,它存储了d2hackmap的各种设置和参数。玩家可以通过编辑这个文件来调整工具的行为,例如设置地图显示的细节、启用或禁用特定的功能等。配置文件通常使用文本格式,可能...
【标签】"d2pt kolbot KPBOT kolbot拾取文件 d2ptcom" 这些标签进一步明确了主题,"kolbot拾取文件"特别指出该工具具有自动拾取游戏内物品的功能,这对于长时间游戏或刷装备的玩家来说非常有用。而标签中的"kolbot...
《Kissy 文件与 KissyTeam 的前端开发实践》 Kissy 是一个轻量级的 JavaScript 框架,由 KissyTeam 团队开发并维护。这个名为 "kissyteam-kissyteam.github.com-901d2cd.rar" 的压缩包文件,包含了 KissyTeam 在 ...
《求生之路2(Left 4 Dead 2,简称L4D2)插件大全》 在《求生之路2》这款多人合作的第一人称射击游戏中,玩家将扮演幸存者,与丧尸群展开激烈战斗,寻找生存的希望。为了增加游戏的趣味性和挑战性,玩家社区开发了...
`d2gstoy.sln`是一个Solution文件,这是Visual Studio项目的主要入口,用于组织和管理多个相关项目的集合。通过这个文件,开发者可以打开整个项目结构,包括各个子项目、配置信息以及构建设置。 接下来是`gsmate`、...
在源代码的【d2hackmap113c】文件中,可能包含以下结构: 1. 主程序源文件:通常命名为`main.cpp`,这是整个项目的入口点,负责程序的初始化和控制流程。 2. 类定义:用于实现各种功能的类,如地图编辑器类、内存...
电路原理课件-d2n.ppt
D2DCommSimul-韩语_d2d.zip
《深入解析D2HackMap1.13c源码》 在编程领域,源码是理解软件工作原理的钥匙,它揭示了程序背后的逻辑和结构。对于《暗黑破坏神2》(Diablo II)的爱好者和开发者而言,D2HackMap1.13c的源码提供了一个宝贵的资源,...