亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? disk.cpp

?? C++實現的模擬操作系統
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
		strError->Format("根目錄中不能刪除文件");
		return FALSE;
	}

	if(1==nCount)
	{
		list=Rootlist[load[0]];           //得到目錄信息
	}
	else
	{
		file.Seek(LtoP(load[nCount-1]),CFile::begin);
		file.Read(&list,sizeof(List));     //得到目錄信息
	}
	
	if(2>=byinfo[list.start])           //如果目錄為空
	{
		strError->Format("目錄為空");
		return FALSE;
	}
	
	byte BIndex=list.start;        //保存當前起始地址,即他下一層的父地址
	List Nextlist;                       //保存他下一個目錄;
	
	file.Seek(LtoP(list.start),CFile::begin);
	file.Read(&Nextlist,sizeof(List));       //讀取第一個子目錄信息;
	
	
	if(Nextlist.name[0]==name[0]&&Nextlist.name[1]==name[1]&&Nextlist.name[2]==name[2]&&Nextlist.postfix==name[4])
		//如果是刪除此目錄,即第一個目錄
	{
		if(3==Nextlist.type)           //如果是文件類型		         
		{	
			nextin=Nextlist.start;
			for(;nextin>2&&nextin<=128;)  //將分配給他的內容地址標為未用
			{	
				in=byinfo[nextin];
				byinfo[nextin]=0;
				nextin=in;
			}
			if(2<byinfo[BIndex]&&byinfo[BIndex]<=128)  //如果有兄弟目錄
			{
				BIndex=byinfo[BIndex];          //BIndex存儲其兄弟目錄的地址
				file.Seek(LtoP(BIndex),CFile::begin);
				file.Read(&Nextlist,sizeof(List));
				file.Seek(LtoP(list.start),CFile::begin);
				file.Write(&Nextlist,sizeof(List));         //將其兄弟目錄移動到目錄起始地址
				
				byinfo[list.start]=byinfo[BIndex];  //修改分配表,將其兄弟指向的下一				                                        
				byinfo[BIndex]=0;					//個地址附給起目錄指向的下一個地址.
				
			}
			else		//沒有兄弟目錄
			{
				byinfo[list.start]=0;  //清空目錄
				if(2==list.type)      //如果是子目錄,不是盤號
				{
					list.start=0;     //將目錄起始地址清空,表沒子目錄
					file.Seek(LtoP(load[nCount-1]),CFile::begin);
					file.Write(&list,sizeof(List));     //得到目錄信息					
				}
			}
			file.SeekToBegin();
			file.Write(&byinfo,sizeof(byte)*128);  //修改文件
			strError->Format("成功刪除%c%c%c.%c",name[0],name[1],name[2],name[4]);
			return TRUE;
		}
	}
	else                //否則不是目錄中的首目錄
	{
		byte nextindex;
		nextindex=byinfo[BIndex];     // 下一個兄弟目錄的地址
		while(2<nextindex&&nextindex<=128)
		{
			file.Seek(LtoP(nextindex),CFile::begin);
			file.Read(&Nextlist,sizeof(List));
			if(3==Nextlist.type)//如果是文件類型 
			{
				
				if(Nextlist.name[0]==name[0]&&Nextlist.name[1]==name[1]&&Nextlist.name[2]==name[2]&&Nextlist.postfix==name[4])
				{
					nextin=Nextlist.start;
					for(;nextin>2&&nextin<=128;)  //將分配給他的內容地址標為未用
					{	
						in=byinfo[nextin];
						byinfo[nextin]=0;
						nextin=in;
					}
					byinfo[BIndex]=byinfo[nextindex];
					byinfo[nextindex]=0;                //更改分配表信息
					file.SeekToBegin();
					file.Write(&byinfo,sizeof(byte)*128);  //修改文件
					strError->Format("成功刪除%c%c%c.%c",name[0],name[1],name[2],name[4]);
					return TRUE;
					
				}
			}
			BIndex=nextindex;
			nextindex=byinfo[nextindex];
		}
		
	}
	
	strError->Format("沒有找到文件:%c%c%c.%c",name[0],name[1],name[2],name[4]);
	return FALSE;
}

bool CDisk::Rdir(char name[3],CString * strError)     //刪除空目錄
{
	int nCount=load.GetSize();            //得到當前路徑層數
	if(0==nCount)
	{
		strError->Format("根目錄中不能刪除目錄");
		return FALSE;
	}
	
	if(1==nCount)
	{
		list=Rootlist[load[0]];           //得到目錄信息
	}
	else
	{
		file.Seek(LtoP(load[nCount-1]),CFile::begin);
		file.Read(&list,sizeof(List));     //得到目錄信息
	}
	
	if(2>=byinfo[list.start])           //如果目錄為空
	{
		strError->Format("目錄為空");
		return FALSE;
	}
	
	byte BIndex=list.start;        //保存當前起始地址,即他下一層的父地址
	List Nextlist;                       //保存他下一個目錄;
	
	file.Seek(LtoP(list.start),CFile::begin);
	file.Read(&Nextlist,sizeof(List));       //讀取第一個子目錄信息;
	
	
	if(Nextlist.name[0]==name[0]&&Nextlist.name[1]==name[1]&&Nextlist.name[2]==name[2])
		//如果是刪除此目錄,即第一個目錄
	{
		if(2==Nextlist.type)           //如果是目錄類型 
		{
			if(0!=Nextlist.start)      //如果不是空目錄
			{
				strError->Format("%c%c%c不是空目錄,不能刪除",name[0],name[1],name[2]);
				return FALSE;
			}
			if(2<byinfo[BIndex]&&byinfo[BIndex]<=128)  //如果有兄弟目錄
			{
				BIndex=byinfo[BIndex];          //BIndex存儲其兄弟目錄的地址
				file.Seek(LtoP(BIndex),CFile::begin);
				file.Read(&Nextlist,sizeof(List));
				file.Seek(LtoP(list.start),CFile::begin);
				file.Write(&Nextlist,sizeof(List));         //將其兄弟目錄移動到目錄起始地址
				
				byinfo[list.start]=byinfo[BIndex];  //修改分配表,將其兄弟指向的下一				                                        
				byinfo[BIndex]=0;					//個地址附給起目錄指向的下一個地址.
			}
			else		//沒有兄弟目錄
			{
				byinfo[list.start]=0;  //清空目錄
				if(2==list.type)      //如果是子目錄,不是盤號
				{
					list.start=0;     //將目錄起始地址清空,表沒子目錄
					file.Seek(LtoP(load[nCount-1]),CFile::begin);
					file.Write(&list,sizeof(List));     //得到目錄信息					
				}
			}
			file.SeekToBegin();
			file.Write(&byinfo,sizeof(byte)*128);  //修改文件
			strError->Format("成功刪除%c%c%c",name[0],name[1],name[2]);
			return TRUE;
		}
	}
	else                //否則不是目錄中的首目錄
	{
		byte nextindex;
		nextindex=byinfo[BIndex];     // 下一個兄弟目錄的地址
		while(2<nextindex&&nextindex<=128)
		{
			file.Seek(LtoP(nextindex),CFile::begin);
			file.Read(&Nextlist,sizeof(List));
			if(2==Nextlist.type)//如果是文件類型 
			{
				if(0!=Nextlist.start)      //如果不是空目錄
				{
					strError->Format("%c%c%c不是空目錄,不能刪除",name[0],name[1],name[2]);
					return FALSE;
				}
				
				if(Nextlist.name[0]==name[0]&&Nextlist.name[1]==name[1]&&Nextlist.name[2]==name[2])
				{
					byinfo[BIndex]=byinfo[nextindex];
					byinfo[nextindex]=0;                //更改分配表信息
					file.SeekToBegin();
					file.Write(&byinfo,sizeof(byte)*128);  //修改文件
					strError->Format("成功刪除%c%c%c",name[0],name[1],name[2]);
					return TRUE;
					
				}
			}
			BIndex=nextindex;
			nextindex=byinfo[nextindex];
		}
		
	}
	
	strError->Format("沒有找到目錄:%c%c%c",name[0],name[1],name[2]);
	return FALSE;
}

bool CDisk::Deldir(byte index,CString *strError)      //刪除非空或空目錄的遞歸函數
{
	if(2>=index||index>128)       // 如果為無效地址
		return TRUE;

	if(byinfo[index]<=2)  //如果該地址沒有用
		return TRUE;

	List newlist;
	file.Seek(LtoP(index),CFile::begin);
	file.Read(&newlist,sizeof(List));
	
	if(byinfo[index]<=128 && byinfo[index]>2)   //有兄弟目錄
	{
		Deldir(byinfo[index],strError);  //先刪除他兄弟目錄
	}
	
	if(2==newlist.type)       //如果此為目錄文件
	{
		Deldir(newlist.start,strError);     //刪除其子目錄
	}

	byinfo[index]=0;              //刪除自己
	byte nextin,in;
	if(3==newlist.type)              //如果為文件
	{
		nextin=newlist.start;
		for(;nextin>2&&nextin<=128;)  //將分配給他的內容地址標為未用
		{	
			in=byinfo[nextin];
			byinfo[nextin]=0;
			nextin=in;
		}
	}
	return TRUE;
}

bool CDisk::Deldir(char name[3],CString * strError)     //刪除非空或空目錄
{
	if(!CD(name,strError))    //進入該目錄,刪除他所有子目錄。
	{
		strError->Format("沒有 %c%c%c 文件夾",name[0],name[1],name[2]);
		return FALSE;
	}
	
	int nCount=load.GetSize();
	byte index=load[nCount-1];
	List newlist;

	file.Seek(LtoP(index),CFile::begin);
	file.Read(&newlist,sizeof(List));
	
	Deldir(newlist.start,strError); //	刪除其子目錄
	newlist.start=0;
	file.Seek(LtoP(index),CFile::begin);
	file.Write(&newlist,sizeof(List));
	
	CD(".. ",strError);    //退出該目錄;
	if(!Rdir(name,strError))   //刪除該目錄
		return FALSE;
	return TRUE;
}

bool CDisk::Type(char name[6],CString str,CString * strError)     //顯示文件
{
	int nCount=load.GetSize(); //得到路徑的長度
	
	if(0==nCount)              //在根目錄下
	{
		strError->Format("不能找到%c%c%c%c%c文件",name[0],name[1],name[2],name[3],name[4]);
		return FALSE;
	}
	
	BYTE index;
	if(1==nCount)   //
	{
		list=Rootlist[load[0]];
		index=list.start;
	}
	else
	{
		file.Seek(LtoP(load[nCount-1]),CFile::begin);
		file.Read(&list,sizeof(List));
		index=list.start;                       //得到該目錄的開始位置		
	}
	if(2<index)
	{
		for(;byinfo[index]>2;)
		{
			file.Seek(LtoP(index),CFile::begin);
			file.Read(&list,sizeof(List));
			if(3==list.type)
			{
				if(list.name[0]==name[0]&&list.name[1]==name[1]&&list.name[2]==name[2]&&list.postfix==name[4])
				{
					byte nextin;
					char ch[65]={0};
					file.Seek(LtoP(list.start),CFile::begin);	
					file.Read(ch,64);
					tydlg.m_str=ch;
					nextin=byinfo[list.start];
					for(;nextin>2&&nextin<=128;)
					{
						file.Seek(LtoP(nextin),CFile::begin);	
						file.Read(ch,64);
						tydlg.m_str+=ch;
						nextin=byinfo[nextin];
					}
					str=tydlg.m_str;
					*strError="";
					tydlg.DoModal();
					return TRUE;
				}
			}
			index=byinfo[index];
			if(index>128||index<=2)
				break;
		}
	}    //
	strError->Format("不能找到%c%c%c%c%c文件",name[0],name[1],name[2],name[3],name[4]);
	return TRUE;
}

bool CDisk::Edit(char name[6],CString * strError)       //編輯文件
{
	int nCount=load.GetSize(); //得到路徑的長度
	
	if(0==nCount)              //在根目錄下
	{
		strError->Format("不能找到%c%c%c%c%c文件",name[0],name[1],name[2],name[3],name[4]);
		return FALSE;
	}
	
	BYTE index;
	if(1==nCount)   //
	{
		list=Rootlist[load[0]];
		index=list.start;
	}
	else
	{
		file.Seek(LtoP(load[nCount-1]),CFile::begin);
		file.Read(&list,sizeof(List));
		index=list.start;                       //得到該目錄的開始位置		
	}
	if(2<index)
	{
		for(;byinfo[index]>2;)
		{
			file.Seek(LtoP(index),CFile::begin);
			file.Read(&list,sizeof(List));
			if(3==list.type)
			{
				if(list.name[0]==name[0]&&list.name[1]==name[1]&&list.name[2]==name[2]&&list.postfix==name[4])
				{
					byte nextin,in;
					char ch[65]={0};
					file.Seek(LtoP(list.start),CFile::begin);	
					file.Read(ch,64);
					eddlg.m_str=ch;
					nextin=byinfo[list.start];
					byinfo[list.start]=255;
					for(;nextin>2&&nextin<=128;)
					{
						file.Seek(LtoP(nextin),CFile::begin);	
						file.Read(ch,64);
						eddlg.m_str+=ch;
						in=byinfo[nextin];
						byinfo[nextin]=0;
						nextin=in;
					}
					file.SeekToBegin();
					file.Write(byinfo,sizeof(byte)*128);
					CString old=eddlg.m_str;
					*strError="";
					if(IDOK!=eddlg.DoModal())
					{
						eddlg.m_str=old;
					}
					char *p;
					int strlength=eddlg.m_str.GetLength();
					int time=(strlength-1)/64;   //是大于64個字節多少倍
					int Ladd[3]={0};
					if(time>0)
					{
						if(!Seekroom(Rootlist[load.GetAt(0)].name[0],Ladd,time))
						{
							strError->Format("沒有足夠的空間,修改失敗");
							return FALSE;
						}
					}
					file.Seek(LtoP(list.start),CFile::begin);
					p=eddlg.m_str.GetBuffer(64);
					file.Write(p,64);
					for(int j=0;j<time;j++)
					{
						if(0==j)
							byinfo[list.start]=Ladd[0];
						file.Seek(LtoP(Ladd[j]),CFile::begin);
						eddlg.m_str.Delete(0,64);
						if(j>0)
							byinfo[Ladd[j-1]]=Ladd[j];
						p=eddlg.m_str.GetBuffer(64);
						file.Write(p,64);						
					}
					if(j>0)
					{
						byinfo[Ladd[j-1]]=255;
						file.SeekToBegin();
						file.Write(byinfo,sizeof(byte)*128);
					}
					return TRUE;
				}
			}
			index=byinfo[index];
			if(index>128||index<=2)
				break;
		}
	}    //
	strError->Format("不能找到%c%c%c%c%c文件",name[0],name[1],name[2],name[3],name[4]);
	return FALSE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产一区二区亚洲人成毛片 | 日韩成人午夜精品| 不卡区在线中文字幕| 久久天堂av综合合色蜜桃网| 麻豆精品新av中文字幕| 欧美变态口味重另类| 丁香婷婷深情五月亚洲| 欧美国产精品一区| 一本色道久久综合亚洲aⅴ蜜桃| 国产精品福利影院| 在线一区二区三区四区| 日韩极品在线观看| 国产精品日产欧美久久久久| 一本到不卡免费一区二区| 91在线观看污| 亚洲激情网站免费观看| 7777精品伊人久久久大香线蕉| 日韩和欧美的一区| 欧美aⅴ一区二区三区视频| 中文字幕一区免费在线观看| 在线综合+亚洲+欧美中文字幕| 538在线一区二区精品国产| 日韩欧美资源站| 91老师国产黑色丝袜在线| 91福利国产精品| 日韩免费高清电影| 欧美日韩精品一区二区三区四区 | 色欧美片视频在线观看在线视频| 成人av第一页| 欧美在线小视频| 91小视频在线| 欧美久久一区二区| 欧美视频在线观看一区| 成人免费看视频| 亚洲午夜在线电影| 亚洲国产成人私人影院tom| 亚洲欧美另类久久久精品| 久久九九影视网| 欧美一区二区三区免费在线看 | 一区二区免费在线| 国产精品你懂的在线| 亚洲激情中文1区| 狠狠色狠狠色综合| 蜜臀va亚洲va欧美va天堂| 成人禁用看黄a在线| 337p亚洲精品色噜噜狠狠| 日本一区二区三区在线观看| 国产日韩精品一区| 亚洲不卡在线观看| 亚洲图片欧美色图| 国产成人福利片| 成人国产精品免费观看动漫| 制服丝袜av成人在线看| 亚洲九九爱视频| 国产自产v一区二区三区c| 欧美性一级生活| ㊣最新国产の精品bt伙计久久| 免费人成网站在线观看欧美高清| 一本一道综合狠狠老| 欧美国产日本韩| 国产一区二区三区黄视频 | 欧美精品国产精品| 国产精品视频看| 韩国理伦片一区二区三区在线播放 | 制服丝袜日韩国产| 亚洲精品高清在线观看| av一区二区三区在线| 99riav一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av| 日韩中文字幕一区二区三区| 欧美日韩中文精品| 日韩午夜在线观看视频| 亚洲国产欧美日韩另类综合| 99re66热这里只有精品3直播| 久久亚洲一区二区三区四区| 国产一区二区三区视频在线播放| 欧美一级二级在线观看| 日本一不卡视频| 日韩视频在线你懂得| 玖玖九九国产精品| 丰满少妇久久久久久久| 2024国产精品视频| 久久99九九99精品| 91成人看片片| 午夜精品福利视频网站| 国产成人精品1024| 国产日韩影视精品| 丁香六月综合激情| 中文字幕av在线一区二区三区| 国产99精品国产| 一区二区三区在线免费观看| 欧美在线观看视频一区二区三区| 亚洲一区二区三区美女| 国产成人免费高清| 亚洲国产精品v| 综合分类小说区另类春色亚洲小说欧美| 中文字幕在线观看不卡视频| 97超碰欧美中文字幕| 亚洲一区二区偷拍精品| 欧美一区二区在线免费播放| 国产最新精品免费| 亚洲天堂精品视频| 欧美片网站yy| 成人午夜短视频| 一区二区三区四区乱视频| 欧美剧情电影在线观看完整版免费励志电影 | 中文字幕乱码久久午夜不卡 | 欧美精品一区二区蜜臀亚洲| 成人免费观看av| 亚洲一区二区三区三| 久久久久久影视| 秋霞成人午夜伦在线观看| 精品99一区二区| 色哟哟国产精品| 狠狠色综合播放一区二区| 亚洲精品日韩专区silk| 日韩免费观看高清完整版| 日本精品视频一区二区| 麻豆成人91精品二区三区| 欧美经典一区二区| 3d动漫精品啪啪1区2区免费| av在线不卡网| 国内精品免费**视频| 亚洲高清不卡在线| 国产精品欧美一区二区三区| 日韩写真欧美这视频| 一本色道久久综合精品竹菊| 国产精品一区二区三区网站| 日韩精品一区二区三区视频在线观看 | 秋霞国产午夜精品免费视频| 国产精品久久久久久妇女6080| 久久精品国产一区二区三 | 韩国成人在线视频| 日本电影欧美片| 九一久久久久久| 亚洲综合激情网| 国产女人18水真多18精品一级做| 欧美三级乱人伦电影| 99精品欧美一区二区三区综合在线| 日本中文字幕一区二区视频| 欧美国产日韩亚洲一区| 日韩女优av电影| 欧美一区二区国产| 欧美日韩日日摸| 色综合久久久久综合体| 97精品国产97久久久久久久久久久久 | 色综合天天综合给合国产| 久久综合九色综合97婷婷| 91精品国产色综合久久久蜜香臀| 欧美性三三影院| 欧美日韩五月天| 欧美日韩一区二区三区四区五区| 91亚洲资源网| 99免费精品视频| 91在线一区二区| 一本到不卡精品视频在线观看 | 午夜视频在线观看一区二区三区 | 五月婷婷激情综合网| 亚洲成人动漫在线免费观看| 亚洲综合区在线| 午夜免费久久看| 日韩精品国产精品| 麻豆一区二区99久久久久| 精品一区二区免费| 国产精品一区二区男女羞羞无遮挡| 国产一区二区女| 不卡免费追剧大全电视剧网站| 99久久99久久精品免费看蜜桃| 97精品国产97久久久久久久久久久久| 97久久久精品综合88久久| 欧美日韩综合色| 26uuu国产在线精品一区二区| 久久精品欧美一区二区三区不卡| 国产亚洲女人久久久久毛片| 久久精品人人做人人爽人人| 国产精品毛片久久久久久久| 亚洲自拍与偷拍| 美女任你摸久久| 丁香天五香天堂综合| 欧美午夜精品久久久久久超碰| 69堂成人精品免费视频| 精品欧美一区二区久久| 亚洲欧洲av色图| 五月天一区二区| 成人污视频在线观看| 欧美日韩精品一区视频| 精品国产一区二区三区不卡| 亚洲欧洲综合另类| 蜜乳av一区二区| 91麻豆国产自产在线观看| 日韩一区二区在线播放| 国产精品久久久久久亚洲毛片| 亚洲一二三区在线观看| 国产一级精品在线| 欧美人xxxx| 中文字幕av资源一区| 日本欧美一区二区三区| jlzzjlzz欧美大全| 亚洲精品一区二区三区福利| 亚洲成人激情社区|