1. 程式人生 > >Delphi獲取檔名、檔名不帶副檔名、檔名的方法;delphi 獲取檔案所在路徑

Delphi獲取檔名、檔名不帶副檔名、檔名的方法;delphi 獲取檔案所在路徑

取檔名
ExtractFileName(FileName);
取副檔名:
ExtractFileExt(filename);

取檔名,不帶副檔名:

方法一:

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"