Delphi獲取檔名、檔名不帶副檔名、檔名的方法;delphi 獲取檔案所在路徑
取檔名,不帶副檔名:
方法一:
Function ExtractFileNameNoExt(FileString: String): String; Var FileWithExtString: String; FileExtString: String; LenExt: Integer; LenNameWithExt: Integer; Begin FileWithExtString := ExtractFileName(FileString); LenNameWithExt := Length(FileWithExtString); FileExtString := ExtractFileExt(FileString); LenExt := Length(FileExtString); If LenExt = 0 Then Begin Result := FileWithExtString; End Else Begin Result := Copy(FileWithExtString,1,(LenNameWithExt-LenExt)); End; End;
方法二:
ChangeFileExt(ExtractFileName(Application.ExeName),'')
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//delphi 獲取檔案所在路徑
ExtractFileDrive :返回完整檔名中的驅動器,如"C:"
ExtractFilePath:返回完整檔名中的路徑,最後帶“/”,如"C:/test/"
ExtractFileDir:返回完整檔名中的路徑,最後不帶“/” ,如"C:/test"
ExtractFileName:返回完整檔名中的檔名稱 (帶副檔名),如"mytest.doc"
ExtractFileExt 返回完整檔名中的副檔名(帶.),如".doc"
ExtractRelativePath : 返回相對路徑,定義如下:
function ExtractRelativePath(const BaseName, DestName: string): string;
使用測試下如:
SysUtils.ExtractRelativePath('C:/test','C:/Test/TestRelativePath'):返回TestRelativePath
SysUtils.ExtractRelativePath('C:/Test/TestRelativePath','C:/test'):返回'../TestRelativePath'
SysUtils.ExtractRelativePath('C:/Test/TestRelativePath/','C:/test'):返回'../../TestRelativePath'
ExtractShortPathName :返回短檔名,即8+3,檔名長八位,副檔名為3號,為保持DOS系統相容而存在
若想獲取的檔名不帶路徑,可用:
ChangeFileExt(TIdAttachment(Msg.MessageParts.Items[intIndex]).Filename,''); 函式將副檔名改掉即可.目前好象就這一種辦法,誰還有更好的辦法?請告知
另附其它地方的資料:
1、檔名函式
檔名函式可以對檔案的名稱、所在子目錄、驅動器和副檔名等進行操作。下表列出這些函式及其功能。
函式 說明
ExpandFileName() 返回檔案的全路徑(含驅動器、路徑)
ExtractFileExt() 從檔名中抽取副檔名
ExtractFileName() 從檔名中抽取不含路徑的檔名
ExtractFilePath() 從檔名中抽取路徑名
ExtractFileDir() 從檔名中抽取目錄名
ExtractFileDrive() 從檔名中抽取驅動器名
ChangeFileExt() 改變檔案的副檔名
ExpandUNCFileName() 返回含有網路驅動器的檔案全路徑
ExtractRelativePath() 從檔名中抽取相對路徑資訊
ExtractShortPathName() 把檔名轉化為DOS的8·3格式
MatchesMask() 檢查檔案是否與指定的檔名格式匹配
ExtractFilePath(FileName:String)
該函式返回路徑名,其結尾字元總是“/”
ExtractFileDir(FileName:String)
該函式同樣返回路徑名,但不包括結尾的字元“/”,除非返回的路徑是根目錄。
下面就把這些函式作一一介紹:
⑴ExpandFileName()
原型:extern PACKAGE AnsiString __fastcall ExpandFileName(const AnsiString FileName);
功能:返回檔案的全路徑(含驅動器、路徑)
引數:FileName:要處理的檔名
例:ShowMessage(ExpandFileName(Application->ExeName));//顯示你的程式檔名,如C:/MyBCB/Sample1.EXE
⑵ExtractFileExt()
原型:extern PACKAGE AnsiString __fastcall ExtractFileExt(const AnsiString FileName);
功能:從檔名中抽取副檔名
引數:FileName:要處理的檔名(全路徑)
例:ShowMessage(ExtractFileExt(Application->ExeName));//顯示".exe"
⑶ExtractFileName()
原型:extern PACKAGE AnsiString __fastcall ExtractFileName(const AnsiString FileName);
功能:從檔名中抽取不含路徑的檔名
引數:FileName:要處理的檔名
例:ShowMessage(ExtractFileExt("c://Winnt//SOL.EXE"));//顯示"SOL.EXE"
⑷ExtractFilePath()
原型:extern PACKAGE AnsiString __fastcall ExtractFilePath(const AnsiString FileName);
功能:從檔名中抽取路徑名
引數:FileName:要處理的檔名
例:ShowMessage(ExtractFilePath("Winnt//SOL.EXE"));//顯示"Winnt/"
⑸ExtractFileDir()
原型:extern PACKAGE AnsiString __fastcall ExtractFileDir(const AnsiString FileName);
功能:從檔名中抽取目錄名(和上個函式不同,不包括最後的"/")
引數:FileName:要處理的檔名
例:ShowMessage(ExtractFileDir("Winnt//SOL.EXE"));//顯示"Winnt",注意和上個函式的區別
⑹ExtractFileDrive()
原型:extern PACKAGE AnsiString __fastcall ExtractFileDrive(const AnsiString FileName);
功能:從檔名中抽取驅動器名
引數:FileName:要處理的檔名
例:ShowMessage(ExtractFileDrive("c://Winnt//SOL.EXE"));//顯示"c:"
⑺ChangeFileExt()
原型:extern PACKAGE System::AnsiString __fastcall ChangeFileExt(const System::AnsiString FileName, const System::AnsiString Extension);
功能:更改檔名的副檔名,不是對真正的檔案進行改名,只是對檔名這個字串進行處理
引數:FileName:要改名的檔名,Extension:新的副檔名
例:ShowMessage(ChangeFileExt("c://Winnt//SOL.EXE",".OOO"));//顯示"c:/winnt/SOL.OOO"
⑻ExpandUNCFileName()
原型:extern PACKAGE AnsiString __fastcall ExpandUNCFileName(const AnsiString FileName);
功能:返回含有網路驅動器的檔案全路徑,格式為://機器名/共享名/檔名
引數:FileName:要處理的檔名
例:ShowMessage(ExpandUNCFileName("F://Winnt//SOL.EXE"));/*如果F:是對映的網路驅動器,則顯示"
⑼ExtractRelativePath()
原型:extern PACKAGE AnsiString __fastcall ExtractRelativePath(const AnsiString BaseName, const AnsiString DestName);
功能:從檔名中抽取相對路徑資訊,如"../sss/ss.asd"這種形式
引數:BaseName:基準檔名;DestName:目標檔名
例:ShowMessage(ExtractRelativePath("D://Source//c//1.123","D://Source//Asm//dz.asm"));/*顯示"../asm/dz.asm"*/
⑽ExtractShortPathName()
原型:extern PACKAGE AnsiString __fastcall ExtractShortPathName(const AnsiString FileName);
功能:把檔名轉換為DOS的8、3格式
引數:FileName:要處理的檔名
例:ShowMessage(ExtractShortPathName("E://Program Files//Dual Wheel Mouse//4dmain.exe"));/*顯示"E:/Progra~1/dualwh~1/4dmain.exe"*/
⑾MatchesMask()
原型:extern PACKAGE bool __fastcall MatchesMask(const AnsiString Filename, const AnsiString Mask);
功能:檢查檔案是否與指定的檔名格式匹配
引數:FileName:要處理的檔名;Mask:檔名格式,支援萬用字元
例:ShowMessage(MatchesMask("Lxf.exe","*.?x?));//顯示"true"