bestlong 怕失憶論壇

標題: 如何取得暫存目錄的路徑 [打印本頁]

作者: bestlong    時間: 2010-5-26 13:48     標題: 如何取得暫存目錄的路徑

可以用讀取系統變數 TEMP 或是 TMP 的方式:
  1. uses SysUtils;

  2. t := GetEnvironmentVariable('TEMP');
複製代碼
另外也可以用 GetTempPath API function 取得, 不過直接使用比較麻煩所以用函數包裝一下:
  1. uses SysUtils;

  2. function GetTempDirectory: String;
  3. var
  4.   tempFolder: array[0..MAX_PATH] of Char;
  5. begin
  6.   GetTempPath(MAX_PATH, @tempFolder);
  7.   result := StrPas(tempFolder);
  8. end;
複製代碼
這樣就可以簡單的用呼叫函數的方式應用:
  1. t := GetTempDirectory;
複製代碼

作者: bestlong    時間: 2010-5-26 13:57

若是程式可以同時多次執行的話, 用相同的暫存目錄能會有問題時, 可以再增加利用 Process identifier 的數值加一層目錄來區分, 路徑取得方法如下:
  1. t := GetTempDirectory + IntToStr(GetCurrentProcessId) + '\';
複製代碼
不過這個路徑就不一定會存在, 需要自行檢查與建立
作者: bestlong    時間: 2010-5-26 21:24

在 Delphi 中使用臨時的目錄或檔案
http://www.bestlong.idv.tw/thread-27-1-1.html
作者: bestlong    時間: 2010-5-26 21:36

另一個產生唯一暫存路徑的方式
可以用產生 GUID 數值然後轉成 String 的做法
作者: bestlong    時間: 2010-5-26 21:40

From http://zh-tw.how-to.mobi/index.php?id=272783
  1. function GetTemporaryFileName:string;
  2. var
  3.   Path, FileName: array[0..MAX_PATH] of Char;
  4. begin
  5.   Win32Check(GetTempPath(MAX_PATH, Path) <> 0);   
  6.   Win32Check(GetTempFileName(Path, '~EX', 0, FileName) <> 0);
  7.   Result:=String(Filename);
  8. end;
複製代碼

作者: bestlong    時間: 2010-5-26 21:42

From http://www.programmer-club.com.t ... N/delphi/13815.html
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3.   ShowMessage(Get_TempFileName);
  4. end;

  5. function TForm1.Get_TempFileName: String;
  6. var
  7.   TempFile,TempDir : array[1..256] of Char;
  8.   Files,Dirs:PChar;
  9. begin
  10.   Files:=@TempFile;
  11.   Dirs:=@TempDir;
  12.   GetTEmpPath(256,dirs);
  13.   GetTempFileName(dirs,'~Tmp',0,Files);
  14.   Result:=Copy(Files,1,Length(Files));
  15. end;
複製代碼





歡迎光臨 bestlong 怕失憶論壇 (http://www.bestlong.idv.tw/) Powered by Discuz! X1.5