ExpandFileName 函數 返回包含絕對路徑的字符串
ExtendedSelect 屬性 是否允許存在選擇模式,True時,MultiSelect才有意義
ExtractFileDir 函數 返回驅動器和路徑
ExtractFileExt 函數 返回文件的後綴
ExtractFileName 函數 返回文件名
ExtractFilePath 函數 返回指定文件的路徑
FileAge 函數 返回文件已存在的時間
FileClose 命令 關閉指定的文件
FileCreate 命令 用指定的文件名建立新文件
FileDateToDateTime 函數 將DOS的日期格式轉換為DELPHI的日期格式
FileExists 函數 檢查文件是否存在
FileGatAttr 函數 返回文件的屬性
FileGetDate 函數 返回文件的DOS日期時間標記
FileOpen 命令 用指定的存取模式打開指定的文件
FilePos 函數 返回文件的當前指針位置
FileRead 命令 從指定的文件讀取
FileSearch 命令 在目錄中搜索指定的文件
FileSeek 函數 改變文件的指針
FileSetAttr 函數 設置文件屬性
FileSetDate 函數 設置文件的DOS日期時間標記
FileSize 函數 返回當前文件的大小
FileWrite 函數 對指定的文件做寫操作
RenameFile 函數 對文件重命名
MkDir 建立資料夾
http://delphi.ktop.com.tw/board.php?cid=16&fid=108&tid=23846

 

抓附檔名範例

if Uppercase(ExtractFileExt(FileListBox1.FileName)) = '.BMG' then

 

ChangeFileExt(FileName,'.txt');     //更改副檔名

ChangeFileExt(ExtractFileName(FileName),'') //返回文件名 不包含附擋名

 

//執行檔所在資料夾

ExtractFileDir(Application.ExeName)

//在firemonkey裡是 ParamStr(0)

 

//抓檔案清單 不含子目錄

procedure GetFileList (Const FileName : String; List : TStrings);
var
  H : THandle;
  Data: TWIN32FindData;
begin
  H := FindFirstFile (PChar (FileName), Data);
  if H <> INVALID_HANDLE_VALUE then begin
    try
      List.Add(Data.cFileName);
      while FindNextFile (H, Data) do begin
        List.Add(Data.cFileName);
      end;
    finally
        windows.FindClose (H); //delphi7

       //winApi.Windows.FindClose(H);  //XE10
    end;
  end;
end;

 

//抓檔案清單 含子目錄

procedure GetFileList(Const sPath: String);
  var
    hFind     : THandle;
    filename, fPath  : string;
    nSize     : Int64;
    fd        : WIN32_FIND_DATA;
  begin
    hFind:=Windows.FindFirstFile(PChar(sPath + '*.*'), fd); //所有檔案都找
    if(hFind <> INVALID_HANDLE_VALUE) then
    begin
      repeat
        filename:=fd.cFileName;
        fPath := sPath + filename;
        if((filename = '.') or (filename = '..')) then //不是上層 或 上上層
          Continue;
        if(fd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) > 0 then begin//是否為目錄
          GetFileList(fPath + '\'); //遞迴呼叫 跑子目錄
        end else begin
          Memo1.lines.add(fPath);
        end;
      until (not Windows.FindNextFile(hFind, fd));
      Windows.FindClose(hFind);
    end;
  end;

 

//刪除所有檔案

procedure DeleteFiles (Const FileName : String);
var
  List : TStrings;
  idx : integer;
  Path : String;
begin
  List := TStringList.Create;
  try
    GetFileList (FileName, List);
    Path := ExtractFilePath (FileName);
    for idx := 0 to List.Count - 1 do
      DeleteFile (format ('%s%s', [Path, List.Strings [idx]]));
  finally
    FreeAndNil (List);
  end;
end;

只選擇資料夾 SelectDirectory

FileCtrl

SelectDirectory('Select a directory', '', dir);

 

常用選檔案程式碼

procedure btnExcelImpClick(Sender: TObject);
var Fn: string;
begin
  With TOpendialog.Create(nil) do begin
    Filter := 'CSV 檔案 (*.csv)|*.CSV';
    if not Execute then Exit;
    Fn := Filename;
    Free;
  end;
  showmessage(Fn);
end;

 

檢查有無該目錄如沒有則建立目錄

 ForceDirectories('C:\XXX');

ForceDirectories 可以一次建立多層目錄
ForceDirectories('c:\xxx\yyy\zzz');
就建立 c:\xxx、c:\xxx\yyy、c:\xxx\yyy\zzz 三個目錄

 
arrow
arrow
    文章標籤
    Delphi
    全站熱搜
    創作者介紹
    創作者 抓狂小白 的頭像
    抓狂小白

    抓狂小白的程式筆記

    抓狂小白 發表在 痞客邦 留言(0) 人氣()