`
betty_betty2008
  • 浏览: 24695 次
  • 性别: Icon_minigender_1
  • 来自: 东莞
最近访客 更多访客>>
社区版块
存档分类
最新评论

D2 std.stream 文件读写小练习

    博客分类:
  • 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:
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
分享到:
评论

相关推荐

    IEEE Draft Std. P1857.9-D2:2021 Draft Std. for Standard for Imme

    在压缩包子文件的文件名称列表中,"IEEE Draft Std. P1857.9-D2:2021 Draft Std. for Standard for Immersive Visual Content Coding - 完整英文电子版(118页).pdf" 提示我们有一个详细的文档,包含了118页的英文...

    D2Common.dll.exports.rar

    首先,我们要明白`D2Common.dll.exports.h`文件的作用。这是一个头文件,通常包含了一系列函数声明,用于指导程序员如何正确地调用`D2Common.dll`中的函数。通过分析这个头文件,我们可以了解到游戏内部的函数调用...

    安卓apk反编译(三件套) (com.googlecode.d2j.DexException: not support version问题解决)

    apktool (反编译apk得到资源文件res目录下的layout/xml....) dex2jar (反编译classes.dex文件,得到用于jd-gui工具查看的.jar文件) jd-gui (反编译.class文件,得到java文件,如果有混淆,得到的java文件是...

    解决dex2jar,com.googlecode.d2j.DexException: not support version

    解决com.googlecode.d2j.DexException: not support version。其实就是替换了个dex2jar的包。安卓N之后用新的dex2jar...用文本编辑器打开dex,对 就是以文本形式打开dex文件,修改对应的那个数字,问题解决!!亲测!!

    D2gs暗黑1.11b战网搭建建设服务程序

    `d2server.dll`是游戏服务器的核心库,`D2GS.exe`是游戏服务器的执行文件,而`D2GSSVC.exe`可能是一个服务启动程序,使得服务器能够以后台服务的方式运行,确保稳定性。 6. **d2server.ini**:这是服务器的配置文件...

    1_D2 2023.09.03.zip

    在IT领域中,`.zip`是一种常见的文件压缩格式,用于将多个文件或文件夹打包成一个更小的文件,便于存储、传输和分发。 【描述】描述内容为空,因此我们无法获得关于文件的具体内容或用途的详细信息。通常,描述会...

    IEEE Draft Std. P1857.10-D2:2021 Draft Standard for Third Genera

    《IEEE Draft Std. P1857.10-D2:2021 Draft Standard for Third Generation Video Coding》是国际电气与电子工程师协会(IEEE)发布的一个关于第三代视频编码技术的2021年草案标准。这个标准旨在提高视频编码效率,...

    D2XXUnit.pas

    标题中的"D2XXUnit.pas"表明这是一个Delphi编程语言中的单元(unit)文件,通常在Delphi项目中用于组织和共享代码。这个文件可能是针对FTD2XX.dll的接口定义,FTD2XX.dll是一个由FTDI公司提供的动态链接库,用于与...

    usb串口通信源码D2xx

    简单的usb转串口通信,内含D2xx.jar。能识别usb通信设备,打开设置串口,并正常通信

    动手学深度学习 d2l文件

    动手学深度学习 d2l文件

    d2d1.dll.mui

    d2d1.dll

    d2hackmap

    【文件】"d2hackmap.cfg" 是该工具的配置文件,它存储了d2hackmap的各种设置和参数。玩家可以通过编辑这个文件来调整工具的行为,例如设置地图显示的细节、启用或禁用特定的功能等。配置文件通常使用文本格式,可能...

    d2bot-with-kolbot-cn-test_d2pt_kolbot_KPBOT_kolbot拾取文件_d2ptcom_源

    【标签】"d2pt kolbot KPBOT kolbot拾取文件 d2ptcom" 这些标签进一步明确了主题,"kolbot拾取文件"特别指出该工具具有自动拾取游戏内物品的功能,这对于长时间游戏或刷装备的玩家来说非常有用。而标签中的"kolbot...

    kissy文件 kissyteam-kissyteam.github.com-901d2cd.rar

    《Kissy 文件与 KissyTeam 的前端开发实践》 Kissy 是一个轻量级的 JavaScript 框架,由 KissyTeam 团队开发并维护。这个名为 "kissyteam-kissyteam.github.com-901d2cd.rar" 的压缩包文件,包含了 KissyTeam 在 ...

    l4d2插件.rar_-baijiahao_all4dead_l4D2超级跳插件_l4d2rpg插件_l4d2显示ip插件

    《求生之路2(Left 4 Dead 2,简称L4D2)插件大全》 在《求生之路2》这款多人合作的第一人称射击游戏中,玩家将扮演幸存者,与丧尸群展开激烈战斗,寻找生存的希望。为了增加游戏的趣味性和挑战性,玩家社区开发了...

    D2GSTOY.rar

    `d2gstoy.sln`是一个Solution文件,这是Visual Studio项目的主要入口,用于组织和管理多个相关项目的集合。通过这个文件,开发者可以打开整个项目结构,包括各个子项目、配置信息以及构建设置。 接下来是`gsmate`、...

    D2hackmap源码1.13c-v1.5

    在源代码的【d2hackmap113c】文件中,可能包含以下结构: 1. 主程序源文件:通常命名为`main.cpp`,这是整个项目的入口点,负责程序的初始化和控制流程。 2. 类定义:用于实现各种功能的类,如地图编辑器类、内存...

    电路原理课件-d2n.ppt

    电路原理课件-d2n.ppt

    D2DCommSimul-韩语_d2d.zip

    D2DCommSimul-韩语_d2d.zip

    D2hackmap1.13c源码

    《深入解析D2HackMap1.13c源码》 在编程领域,源码是理解软件工作原理的钥匙,它揭示了程序背后的逻辑和结构。对于《暗黑破坏神2》(Diablo II)的爱好者和开发者而言,D2HackMap1.13c的源码提供了一个宝贵的资源,...

Global site tag (gtag.js) - Google Analytics