VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

用windows API 來做 ini檔的寫入和讀取

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2160


第 1 樓

發表發表於: 星期五 七月 01, 2005 10:52 am    文章主題: 用windows API 來做 ini檔的寫入和讀取 引言回覆

***************用windows API 來做 ini檔的寫入和讀取
*!* * test prg
*!* mfile='.\zz.ini' &&--請注意: 如果沒有加路徑名, 內定則會存到windows 目錄下
*!* msec ='區段名稱'
*!* mdata ='path'
*!* ? '>',writeFileIni(mfile,msec,mdata,'aaaaaa' ),'<'
*!* lcComputadora = ReadFileIni(mfile,msec , mdata )
*!* ? '=',lcComputadora,'='
*!* Return

Function writeFileIni(tcFileName,tcSection,tcEntry,tcWritedata)
Declare Integer WritePrivateProfileString ;
IN WIN32API ;
STRING lpAppName,;
STRING lpKeyName,;
STRING lpString,;
STRING tcFileName
RETURN WritePrivateProfileString(tcSection,tcEntry,tcWritedata,tcFileName)

********************
Function ReadFileIni(tcFileName,tcSection,tcEntry)
Local lcIniValue, lnResult, lnBufferSize
Declare Integer GetPrivateProfileString ;
IN WIN32API ;
STRING cSection,;
STRING cEntry,;
STRING cDefault,;
STRING @cRetVal,;
INTEGER nSize,;
STRING cFileName
lnBufferSize = 255
lcIniValue = Spac(lnBufferSize)
lnResult=GetPrivateProfileString(tcSection,tcEntry,"*NULL*",;
@lcIniValue,lnBufferSize,tcFileName)
lcIniValue=Substr(lcIniValue,1,lnResult)
If lcIniValue="*NULL*"
lcIniValue=.Null.
Endif
Return lcIniValue
*************garfield*********
Function deleteFileIni(tcFileName,tcSection,tcEntry)
RETURN writeFileIni(tcFileName,tcSection,tcEntry, null )
*************garfield*********
Function delSectionFileIni(tcFileName,tcSection)
RETURN writeFileIni(tcFileName,tcSection,null, null )

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2160


第 2 樓

發表發表於: 星期日 七月 03, 2005 6:51 pm    文章主題: 引言回覆

代碼:

*-* >>> VFP OO By Garfield <<< *-*
* 功能: 針對 ini 檔的新增, 修改,刪除 的動作
* 用法:
* 說明: 見笑! 這是我寫的第一個OO程式, 歡迎指教.
 
***用法 測試
ini_file = createobject('ini_file')
ini_file.writeini('.\test.ini' ,'mysection','caption','test-caption')
WAIT windows 'caption='+ ini_file.readini('.\test.ini' ,'mysection','caption')
ini_file.writeini('.\test.ini' ,'mysection','title','haha')
clear
TYPE .\test.ini
WAIT 'wait delete entry (title)...'
ini_file.deleteini('.\test.ini' ,'mysection','title')
clear
TYPE .\test.ini
WAIT 'wait delete Section (mysection)...'
ini_file.delsectionini('.\test.ini' ,'mysection')
clear
TYPE .\test.ini
dele file test.ini

**************  可以將以下這段程式存成副程式, 用 set proc to .... 來準備使用
Define Class ini_file As Custom
   file = ""
   Procedure Init
      Declare Integer WritePrivateProfileString ;
         IN WIN32API ;
         STRING lpAppName,;
         STRING lpKeyName,;
         STRING lpString,;
         STRING tcFileName
      Declare Integer GetPrivateProfileString ;
         IN WIN32API ;
         STRING cSection,;
         STRING cEntry,;
         STRING cDefault,;
         STRING @cRetVal,;
         INTEGER nSize,;
         STRING cFileName
   Endproc
   Procedure writeini(mfilename,msection,mEntry,mWritedata)
      RETURN WritePrivateProfileString(mSection,mEntry,mWritedata,mFileName)
   ENDPROC
   Procedure deleteini(mfilename,msection,mEntry)
      RETURN WritePrivateProfileString(mSection,mEntry,.null.,mFileName)
   ENDPROC
   Procedure delsectionini(mfilename,msection)
      RETURN WritePrivateProfileString(mSection,.null.,.null.,mFileName)
   ENDPROC
   Procedure readini(mfilename,msection,mEntry)
      Local mIniValue, mResult, mBufferSize
      mBufferSize = 255
      mIniValue = Spac(mBufferSize)
      mResult=GetPrivateProfileString(mSection,mEntry,"*NULL*",;
      @mIniValue,mBufferSize,mFileName)
      mIniValue=Substr(mIniValue,1,mResult)
      If mIniValue="*NULL*"
         mIniValue=.Null.
      Endif
      Return mIniValue
   ENDPROC
   Procedure Destroy
   ENDPROC
ENDDEFINE

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作