废话不多说,直接贴代码。这是本人自己琢磨的,因为不知道有没有函数可以实现,所以自己写一个。
如有大神有更好的办法,还请点拨!
AnsiString __fastcall TForm1::GetForwardPath_N(int forwardN) //取当前路径的前 n 级
{
AnsiString iBasePath = GetCurrentDir(); //获取当前路径
if(0 == forwardN)
{
return iBasePath;
}
int tt[128]; //记录第N级路径的位置
int bb=0; //记录总路径级数
AnsiString iTempStr;
char *iStr = iBasePath.c_str();
for(int i=0,j=0;i<iBasePath.Length();i++)
{
if(iStr[i] == ':' || iStr[i] == '\\')
{
tt[j++] =i;
bb++;
}
}
if(forwardN >=bb )
{
iTempStr = iBasePath.SubString(1,tt[0]+1);
}
else
{
iTempStr = iBasePath.SubString(1,tt[bb - forwardN]);
}
return iTempStr;
}
验证:
void __fastcall TForm1::Button3Click(TObject *Sender)
{
AnsiString tt;
for(int i=0;i<7;i++)
{
tt = GetForwardPath_N(i);
Memo1->Lines->Add(tt);
}
}
结果:
H:\Advantech\A_My_Project\Others\GEAutoDownload\20170113
H:\Advantech\A_My_Project\Others\GEAutoDownload
H:\Advantech\A_My_Project\Others
H:\Advantech\A_My_Project
H:\Advantech
H:
H:
H: