?? page2.cpp
字號:
dlgInput.m_input+='\0';
m_display+="Finish Editing\r\n";
strcpy(contect,dlgInput.m_input);
flag=write(fd,contect,strlen(contect));
if(flag == 0) m_display+="Finish Editing\r\n";
else if(flag ==-1) m_display+="Error:\n The disk size is not enough!\r\n";
else m_display+="The disk is not exist!\r\n";
}
close(b);
m_display+=bufferdir;
m_display+=">";
strLine.Format("%s",m_display);
GetDlgItem(IDC_EDITDIS)->SetWindowText(strLine);
m_cmd.Empty();
UpdateData(FALSE);
break;
case 5: /*-刪除目錄-*/
flag=0;
k=0;
for(j=0;j<strlen(a);)
if(a[j]!=' '&&flag==0) j++;
else
{
flag=1;
b[k++]=a[++j];
}
b[k]='\0';
rmdir(b);
m_display+=bufferdir;
m_display+=">";
strLine.Format("%s",m_display);
GetDlgItem(IDC_EDITDIS)->SetWindowText(strLine);
m_cmd.Empty();
UpdateData(FALSE);
break;
case 6:/*--更改當(dāng)前目錄--*/
flag=0;
k=0;
for(j=0;j<strlen(a);)
if(a[j]!=' '&&flag==0) j++;
else
{
flag=1;
b[k++]=a[++j];
}
b[k]='\0';
flag = chdir(b);
if(flag == -1) m_display+="Error:\n The path is not correct!\r\n";
else if(flag == -2) m_display+="Error:\nThe opened is not direct!\r\n";
else if(flag == -3) m_display+="Error:\nThe '\\' is too much !\r\n";
m_display+=bufferdir;
m_display+=">";
strLine.Format("%s",m_display);
GetDlgItem(IDC_EDITDIS)->SetWindowText(strLine);
m_cmd.Empty();
UpdateData(FALSE);
break;
case 7:/*---move文件--*/
flag=0;
k=0;
for(j=0;j<strlen(a);)
if(a[j]!=' '&&flag==0) j++;
else if(flagz==0)
{
flag=1;
name1[k++]=a[++j];
if(a[j]==' ')
{
flagz=1;
name1[k]='\0';
k=0;
}
}
else
{
name2[k++]=a[++j];
}
name2[k]='\0';
mov(name1,name2);
m_display+=bufferdir;
m_display+=">";
strLine.Format("%s",m_display);
GetDlgItem(IDC_EDITDIS)->SetWindowText(strLine);
m_cmd.Empty();
UpdateData(FALSE);
break;
case 8: /*格式化磁盤*/
format();
m_display+=bufferdir;
m_display+=">";
strLine.Format("%s",m_display);
GetDlgItem(IDC_EDITDIS)->SetWindowText(strLine);
m_cmd.Empty();
UpdateData(FALSE);
break;
case 9:///*-顯示當(dāng)前目錄-*/
dir();
m_cmd.Empty();
UpdateData(FALSE);
break;
case 10: //*--創(chuàng)建子目錄--/
flag=0;
k=0;
for(j=0;j<strlen(a);)
if(a[j]!=' '&&flag==0) j++;
else
{
flag=1;
b[k++]=a[++j];
}
b[k]='\0';
// strLine.Format("%d",strlen(b));
// GetDlgItem(IDC_EDIT1)->SetWindowText(strLine);
flag =mkdir(b);
if(flag == -1) m_display+="Error:\n The length of name is too long!\r\n";
else if(flag == -2) m_display+="Error:\n The direct item is already full !\r\n";
else if(flag == -3) m_display+="Error:\n The name is already in the direct ! \r\n";
else if(flag == -4) m_display+="Error:\n \\ can not in the name of a direct !\r\n";
else if(flag == -5) m_display+="Error:\n Error: \n The disk space is full!\r\n";
else if(flag == -6) m_display+="Error: \n '..' or '.' can not as the name of the direct!\r\n";
else if(flag == 0) m_display+="Successfully make dircet!!\r\n";
m_display+=bufferdir;
m_display+=">";
strLine.Format("%s",m_display);
GetDlgItem(IDC_EDITDIS)->SetWindowText(strLine);
m_cmd.Empty();
UpdateData(FALSE);
break;
//case 11:/*-退出系統(tǒng)-*/
// free(contect); // return;
case 12:/*---顯示幫助信息--*/
print();
m_display+=bufferdir;
m_display+=">";
strLine.Format("%s",m_display);
GetDlgItem(IDC_EDITDIS)->SetWindowText(strLine);
m_cmd.Empty();
UpdateData(FALSE);
break;
case 14:/*----執(zhí)行可執(zhí)行文件---*/
fd = open(a); //打開所創(chuàng)建的文件
if(fd ==-1) m_display+="Error:\n The file is not opened !\r\n";
else if(fd==-2) m_display+="The file can't open !\r\n";
else
{
flag = read(fd,contect);
if(flag == -1) m_display+="Error: \n The size is over the length of the file!\r\n";
else executive(contect,flag);
}
close(a);
psw=3;
// executive();
m_display+=bufferdir;
m_display+=">";
strLine.Format("%s",m_display);
GetDlgItem(IDC_EDITDIS)->SetWindowText(strLine);
m_cmd.Empty();
UpdateData(FALSE);
break;
default:
m_display+="ERROR: the command isn't exist!\r\n";
strLine.Format("%s",m_display);
GetDlgItem(IDC_EDITDIS)->SetWindowText(strLine);
m_cmd.Empty();
UpdateData(FALSE);
break;
}
//MessageBox("Get IT");
// add you code here
return true;
}
return CDialog::PreTranslateMessage(pMsg);
}
/*----------------------------------------------------------------------------------------------*/
/*---------------------------------------更改當(dāng)前目錄-------------------------------------------*/
int CPage2::chdir(char *name)
{
int i,j,k,item;
char *str,*str1;
char *temp;
CString strLine;
struct direct *temp_dir;
temp_dir=(struct direct *)malloc(sizeof(struct direct));
*temp_dir=*cur_dir; /*-先用臨時目錄代替當(dāng)前目錄-*/
str=name; /*-str用來記錄下次查找的起始地址-*/
if((!strcmp("..",name))||(!strcmp(".",name)))
{
m_display+="Error:the two directories are not exist!\r\n";
strLine.Format("%s",m_display);
GetDlgItem(IDC_EDITDIS)->SetWindowText(strLine);
return 0;
}
else
{
if(!strcmp("\\",name)) /*如果輸入"\" ,回根目錄*/
{
cur_dir = root;
curdir_block=2;
strcpy(bufferdir,"Root:");
return 0;
}
j=0;
for(i=0;i<(int)strlen(str);i++)/*查找有兩個連續(xù)是"\",即"\\",退出 */
{
if(name[i]=='\\')
{
j++;
if(j>=2)
{
return -3;
}
}
else
j=0;
}
if(name[0]=='\\') /*如果最后一個是"\" ,去掉這個"\"*/
{
*temp_dir = *root;
strcpy(bufferdir,"Root:");
str++;
}
if(str[strlen(str)-1] == '\\')
{
str[strlen(str)-1] = '\0';
}
str1=strchr(str,'\\'); /*-找到'\'字符的位置-*/
temp = (char *)malloc(4*sizeof(char));/*-為子目錄的名字分配空間-*/
if((fp=fopen("disk.dat","rb"))==NULL)
{
m_display+="Error:\nCannot open file!\r\n";
strLine.Format("%s",m_display);
GetDlgItem(IDC_EDITDIS)->SetWindowText(strLine);
return -11;
}
while(str1!=NULL) /*-找到-*/
{
for(i=0;i<str1-str;i++)
{
temp[i]=str[i];
}
temp[i]='\0';
for(j=0;j<MSD;j++) /*-查找該子目錄是否在當(dāng)前目錄中-*/
{
for(k=0;k<(int)strlen(temp);)
{
if(temp_dir->directitem[j].name[k]==temp[k]) k++;
else break;
if(k==(int)strlen(temp)) {k=-1; break;}
}
if((temp_dir->directitem[j].property=='1')&&(k==-1))
break;
}
if(j>=MSD) /*-不在當(dāng)前目錄-*/
return(-1);
item=temp_dir->directitem[j].firstdisk;
fseek(fp,item*DISKSIZE,0);
fread(temp_dir,sizeof(struct direct),1,fp);
str=str1+1;
str1=strchr(str,'\\');
}
for(i=0;i<(int)strlen(str);i++)
temp[i]=str[i];
temp[i]='\0';
for(j=0;j<MSD;j++) /*-查找該子目錄是否在當(dāng)前目錄中-*/
{
for(k=0;k<(int)strlen(temp);)
{
if(temp_dir->directitem[j].name[k]==temp[k]) k++;
else break;
if(k==(int)strlen(temp)) {k=-1;break;}
}
if((temp_dir->directitem[j].property=='1')&&(k==-1))
break;
}
free(temp);/*釋放申請的臨時空間*/
if(temp_dir->directitem[j].property!='1') /*-打開的不是目錄-*/
return(-2);
if(j>=MSD) /*-不在當(dāng)前目錄-*/
return(-1);
item=temp_dir->directitem[j].firstdisk;
/*-當(dāng)前目錄在磁盤中位置-*/
fseek(fp,item*DISKSIZE,0);
fread(temp_dir,sizeof(struct direct),1,fp);
fclose(fp);
}
if(name[0] !='\\')
bufferdir = strcat(bufferdir,"\\"); /*-修改當(dāng)前目錄-*/
bufferdir = strcat(bufferdir,name);
curdir_block=item;
cur_dir=temp_dir; /*-將當(dāng)前目錄確定下來-*/
return 0;
}
/*----------------------------------------------------------------------------------------------*/
/*----------------------------------------關(guān)閉文件----------------------------------------------*/
int CPage2::close(char *name)
{
int i;
for(i=0;i<MOFN;i++)
{
if(!strcmp(u_opentable.openitem[i].name,name))
break;
}
if(i>=MOFN) /*--文件沒有打開-*/
return(-1);
/*-----------清空該文件的用戶打開表項的內(nèi)容---------------------*/
strcpy(u_opentable.openitem[i].name,"");
u_opentable.openitem[i].firstdisk ='F';
u_opentable.openitem[i].size = 0;
u_opentable.cur_size--;
fd = -1; //文件打開表的序號為 -1
return 0;
}
/*----------------------------------------------------------------------------------------------*/
/*---------------------------------------復(fù)制文件-----------------------------------------------*/
int CPage2::copy(char *name1, char *name2)
{
char *contect;
int flag;
//////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
int flag1=0;
char *temdirect=(char*)malloc(sizeof(DIR_LENGTH));
char *t=(char*)malloc(5);
struct direct * temp_dir;
int i,r=0;
char *bufferdir_temp=(char*)malloc(sizeof(DIR_LENGTH));
char curdir_block_temp;
for(i=0;i<=int(strlen(bufferdir));i++)
*(bufferdir_temp+i)=*(bufferdir+i);
curdir_block_temp=curdir_block;
temp_dir=(struct direct *)malloc(sizeof(struct direct));
*temp_dir=*cur_dir; /*-將當(dāng)前目錄確定下來-*/
i=strlen(name1)-1;
while(i>=0&&name1[i]!='\\')
i--;
if(i!=-1)
{
for(int temp_i=0;temp_i<=5;temp_i++)
if((name1+i)!=NULL)
{
i++;
*(t+(temp_i))=*(name1+i);
}
name1[i-5]='\0';
i=0;
while(name1[i]!='\0')
{
*(temdirect+i)=*(name1+i);
i++;
}
*(temdirect+i)='\0';
flag1=1;
}
else
{
for(i=0;i<=int(strlen(name1));i++)
*(t+i)=*(name1+i);
}
if(flag1==1)
r=chdir(temdirect);
if((r==-1)||(r==-2)) return -7;
name1=t;
/////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/*------------------------------把源文件讀到 contect---------------------*/
contect = (char *)malloc(MAX_WRITE*sizeof(char));
fd = open(name1); //打開源文件
if(fd ==-1)
{
printf("Error:\n The file is not opened ! \n");
}
else if(fd==-2)
printf("The file can't open.");
else
{
flag = read(fd,contect);
*(contect+flag)='\0';
if(flag == -1)
{
printf("Error: \n The size is over the length of the file! \n");
}
else
{
}
}
close(name1);//關(guān)閉源文件
if(flag1==1)
{
for(i=0;i<=int(strlen(bufferdir_temp));i++)
*(bufferdir+i)=*(bufferdir_temp+i);
curdir_block=curdir_block_temp;
*cur_dir=*temp_dir; /*-將當(dāng)前目錄確定下來-*/
}
////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
flag1=0;
r=0;
for(i=0;i<=int(strlen(bufferdir));i++)
*(bufferdir_temp+i)=*(bufferdir+i);
curdir_block_temp=curdir_block;
*temp_dir=*cur_dir; /*-將當(dāng)前目錄確定下來-*/
i=strlen(name2)-1;
while(i>=0&&name2[i]!='\\')
i--;
if(i!=-1)
{
for(int temp_i=0;temp_i<=5;temp_i++)
if((name2+i)!=NULL)
{
i++;
*(t+(temp_i))=*(name2+i);
}
name2[i-5]='\0';
i=0;
while(name1[i]!='\0')
{
*(temdirect+i)=*(name2+i);
i++;
}
*(temdirect+i)='\0';
flag1=1;
}
else
{
for(i=0;i<=int(strlen(name2));i++)
*(t+i)=*(name2+i);
}
if(flag1==1)
r=chdir(temdirect);
if((r==-1)||(r==-2)) return -7;
name2=t;
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
/*--------------------------把contect的內(nèi)容寫到目的文件里--------------------*/
fd = open(name2); //打開目的文件
if(fd ==-1)
{
printf("Error:\n The file is not exist! \n Please create it first!\n");
}
else if(fd==-4) printf("Error:it's not a file,but a directory!\n");
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -