2014年4月14日 星期一

Visual Lisp 輸入 讀寫資料檔

VL 的文字檔案讀寫,基本上與其他程式差距不大 (C, Fortran, ...)

步驟如下

1. 取得檔案檔名跟路徑 (可以用對話盒選取,非必要)
        使用對話盒選取路徑及檔名使用 (getfiled) 函數,可以開啟標準檔案選取對話盒   
     函數定義 (getfiled title default ext flags)
             title 是對話盒標題
             default 是預設路徑或檔案名稱
             ext 是延伸檔案名稱
             flags 控制對話盒行為之旗標
 
    例如在我的程式集中型鋼剖面程式程式碼是
        (setq file (getfiled "儲存檔案" path "hst" 1))
    執行後之對話盒如下
 
     注意變數 path 是已經儲存的路徑,否則每次都從根目錄
開始找檔案,會累死人的,這個變數的儲存地點是在 AutoCAD
 的 acad*.cfg 檔中,是使用(setcfg) 及 (getcfg) 兩個函數進行
操作, 它可以將變數獨立儲存於程式之外,當然,如果只是要
路徑,那麼檔名需除去 。
file 變數自然是儲存傳回之路徑及檔名,注意,如果的程式
路徑檔名是用程式內建,路徑斜線用兩次 如 D:\\ 或是 D:/
2. 進行案開啟動作,傳回檔案旗標
    (open file "r") (open file "w") (open file "a")
    r : read
    w : write
    a : append
   三個參數應該不用解釋太多
   注意要設定一個變數,例如 f 接收傳回值,有兩個目的
       一是判定檔案是否被選取,若沒有 f 為 nil,避免繼續執行讀寫動作
        二、讀寫函數需要此參數作為執行依據


3. 進行讀或寫動作
   (setq var (read-line f))
   (setq var (read-char f))
   (write-line var  f)
   (write-char var  f)
   寫入時注意變數 var 必須為字串,若是整數,實數則要轉換成文字,(rtos) (itoa) 為轉換函數,同樣的,讀取傳回也是字串,若需要轉換也需要 (atof) (atoi) 函數。

4. 關閉檔案
    (close f)

沒有留言:

張貼留言