  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		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
 
 | 	 
  _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |