如何用VFP读写配置文件(.INI)?
2007-03-17 09:40
761 查看
如何用VFP读写配置文件(.INI)?
---------------------------------------------------------------
******读写(读取) INI 文件内容
--------------------------------
******以下是一个读取INI文件的例子1*******
* Reading an arbitrary INI file into a cursor
* 读一个 INI 文件到一个游标
Local lcFileName
lcFileName = getfile("ini")
Create CURSOR csResult (section C(50), keyname C(50),keyvalue C(200))
lcSections = getSections (lcFileName)
= str2cursor (lcSections, "csSections")
Select csSections
Scan ALL
Select csSections
lcKeys = getKeys (lcFileName, csSections.strvalue)
= str2cursor (lcKeys, "csKeys")
Select csKeys
Scan ALL
lcValue = getKeyValue (lcFileName,csSections.strvalue, csKeys.strvalue)
Insert INTO csResult VALUES (csSections.strvalue, csKeys.strvalue, lcValue)
Endscan
Endscan
Select csResult
Go TOP
Browse NORMAL NOWAIT
FUNCTION getSections (lcFileName)
Declare INTEGER GetPrivateProfileString IN kernel32 INTEGER lpAppName,INTEGER lpKeyName,STRING lpDefault,STRING @ lpReturnedString,INTEGER nSize,STRING lpFileName
Local lnSize, lpReturnedString, lnResult
lnSize = 4096
lpReturnedString = Repli (Chr(0), lnSize)
lnResult = GetPrivateProfileString (0,0,"#empty#",@lpReturnedString,lnSize,lcFileName)
Return Left (lpReturnedString, lnResult)
ENDFUNC
FUNCTION getKeys (lcFileName, lcSection)
Declare INTEGER GetPrivateProfileString IN kernel32 STRING lpAppName,INTEGER lpKeyName,STRING lpDefault,STRING @ lpReturnedString,INTEGER nSize,STRING lpFileName
Local lnSize, lpReturnedString, lnResult
lnSize = 16384
lpReturnedString = Repli (Chr(0),lnSize)
lnResult = GetPrivateProfileString (lcSection,0,"#empty#",@lpReturnedString,lnSize,lcFileName)
Return Left (lpReturnedString, lnResult)
ENDFUNC
FUNCTION getKeyValue (lcFileName, lcSection, lcKey)
Declare INTEGER GetPrivateProfileString IN kernel32 STRING lpAppName,STRING lpKeyName,STRING lpDefault,STRING @ lpReturnedString,INTEGER nSize,STRING lpFileName
Local lnSize, lpReturnedString, lnResult
lnSize = 16384
lpReturnedString = Repli (Chr(0), lnSize)
lnResult = GetPrivateProfileString (lcSection,lcKey,"#empty#",@lpReturnedString,lnSize,lcFileName)
Return Left (lpReturnedString, lnResult)
endfunc
FUNCTION str2cursor (lcSource, lcCursor)
Create CURSOR (lcCursor) (strvalue C(250))
Local ii, ch, ss, lnResult
ss = ""
lnResult = 0
For ii=1 TO Len(lcSource)
ch = SUBSTR (lcSource, ii,1)
If ch = Chr(0)
Insert INTO (lcCursor) VALUES (ss)
lnResult = lnResult + 1
ss = ""
Else
ss = ss + ch
Endif
Endfor
Return lnResult
ENDFUNC
FUNCTION getWindowsDir
Declare INTEGER GetWindowsDirectory IN kernel32 STRING @lpBuffer,INTEGER nSize
lpBuffer = SPACE (250)
nSizeRet = GetWindowsDirectory (@lpBuffer, Len(lpBuffer))
Return SUBSTR (lpBuffer, 1, nSizeRet)
ENDFUNC
****************************************
******以下是一个读写INI文件的例子2*******
*-- 定义读应用程序 INI 文件的DLL函数
DECLARE INTEGER GetPrivateProfileString IN Win32API AS GetPrivStr ;
String cSection, String cKey, String cDefault, String @cBuffer, ;
Integer nBufferSize, String cINIFile
*-- 定义写应用程序 INI 文件的DLL函数
DECLARE INTEGER WritePrivateProfileString IN Win32API AS WritePrivStr ;
String cSection, String cKey, String cValue, String cINIFile
&& 调用
&& 以下程序将字符串abc=12,24写入当前目录中的formposi.ini文件中的WindowPositions段中:
LOCAL lcValue,lcEntry
lcEntry = "abc"
lcValue = '12,24'
=WritePrivStr("WindowPositions", lcEntry, lcValue, CURDIR() + "formposi.ini")
&& 以下程序从当前目录中的formposi.ini文件中的WindowPositions段中读取以前保存的字符串,并在wait window中显示出来
LOCAL lcBuffer,lcOldError,lnTop,lnLeft,llError,lnCommaPos,lcEntry
lcEntry = 'abc'
lcBuffer = SPACE(10) + CHR(0)
lcOldError = ON('ERROR')
*-- 在INI 文件中读取窗口位置
IF GetPrivStr("WindowPositions", lcEntry, "", @lcBuffer, LEN(lcBuffer), CURDIR() + "formposi.ini") > 0
*-- 如果分解参数时出现错误,
*-- 忽略该串并使用表单的默认值
ON ERROR llError = .T.
lnCommaPos = AT(",", lcBuffer)
lnTop = VAL(LEFT(lcBuffer, lnCommaPos - 1))
lnLeft = VAL(SUBSTR(lcBuffer, lnCommaPos +
---------------------------------------------------------------
******读写(读取) INI 文件内容
--------------------------------
******以下是一个读取INI文件的例子1*******
* Reading an arbitrary INI file into a cursor
* 读一个 INI 文件到一个游标
Local lcFileName
lcFileName = getfile("ini")
Create CURSOR csResult (section C(50), keyname C(50),keyvalue C(200))
lcSections = getSections (lcFileName)
= str2cursor (lcSections, "csSections")
Select csSections
Scan ALL
Select csSections
lcKeys = getKeys (lcFileName, csSections.strvalue)
= str2cursor (lcKeys, "csKeys")
Select csKeys
Scan ALL
lcValue = getKeyValue (lcFileName,csSections.strvalue, csKeys.strvalue)
Insert INTO csResult VALUES (csSections.strvalue, csKeys.strvalue, lcValue)
Endscan
Endscan
Select csResult
Go TOP
Browse NORMAL NOWAIT
FUNCTION getSections (lcFileName)
Declare INTEGER GetPrivateProfileString IN kernel32 INTEGER lpAppName,INTEGER lpKeyName,STRING lpDefault,STRING @ lpReturnedString,INTEGER nSize,STRING lpFileName
Local lnSize, lpReturnedString, lnResult
lnSize = 4096
lpReturnedString = Repli (Chr(0), lnSize)
lnResult = GetPrivateProfileString (0,0,"#empty#",@lpReturnedString,lnSize,lcFileName)
Return Left (lpReturnedString, lnResult)
ENDFUNC
FUNCTION getKeys (lcFileName, lcSection)
Declare INTEGER GetPrivateProfileString IN kernel32 STRING lpAppName,INTEGER lpKeyName,STRING lpDefault,STRING @ lpReturnedString,INTEGER nSize,STRING lpFileName
Local lnSize, lpReturnedString, lnResult
lnSize = 16384
lpReturnedString = Repli (Chr(0),lnSize)
lnResult = GetPrivateProfileString (lcSection,0,"#empty#",@lpReturnedString,lnSize,lcFileName)
Return Left (lpReturnedString, lnResult)
ENDFUNC
FUNCTION getKeyValue (lcFileName, lcSection, lcKey)
Declare INTEGER GetPrivateProfileString IN kernel32 STRING lpAppName,STRING lpKeyName,STRING lpDefault,STRING @ lpReturnedString,INTEGER nSize,STRING lpFileName
Local lnSize, lpReturnedString, lnResult
lnSize = 16384
lpReturnedString = Repli (Chr(0), lnSize)
lnResult = GetPrivateProfileString (lcSection,lcKey,"#empty#",@lpReturnedString,lnSize,lcFileName)
Return Left (lpReturnedString, lnResult)
endfunc
FUNCTION str2cursor (lcSource, lcCursor)
Create CURSOR (lcCursor) (strvalue C(250))
Local ii, ch, ss, lnResult
ss = ""
lnResult = 0
For ii=1 TO Len(lcSource)
ch = SUBSTR (lcSource, ii,1)
If ch = Chr(0)
Insert INTO (lcCursor) VALUES (ss)
lnResult = lnResult + 1
ss = ""
Else
ss = ss + ch
Endif
Endfor
Return lnResult
ENDFUNC
FUNCTION getWindowsDir
Declare INTEGER GetWindowsDirectory IN kernel32 STRING @lpBuffer,INTEGER nSize
lpBuffer = SPACE (250)
nSizeRet = GetWindowsDirectory (@lpBuffer, Len(lpBuffer))
Return SUBSTR (lpBuffer, 1, nSizeRet)
ENDFUNC
****************************************
******以下是一个读写INI文件的例子2*******
*-- 定义读应用程序 INI 文件的DLL函数
DECLARE INTEGER GetPrivateProfileString IN Win32API AS GetPrivStr ;
String cSection, String cKey, String cDefault, String @cBuffer, ;
Integer nBufferSize, String cINIFile
*-- 定义写应用程序 INI 文件的DLL函数
DECLARE INTEGER WritePrivateProfileString IN Win32API AS WritePrivStr ;
String cSection, String cKey, String cValue, String cINIFile
&& 调用
&& 以下程序将字符串abc=12,24写入当前目录中的formposi.ini文件中的WindowPositions段中:
LOCAL lcValue,lcEntry
lcEntry = "abc"
lcValue = '12,24'
=WritePrivStr("WindowPositions", lcEntry, lcValue, CURDIR() + "formposi.ini")
&& 以下程序从当前目录中的formposi.ini文件中的WindowPositions段中读取以前保存的字符串,并在wait window中显示出来
LOCAL lcBuffer,lcOldError,lnTop,lnLeft,llError,lnCommaPos,lcEntry
lcEntry = 'abc'
lcBuffer = SPACE(10) + CHR(0)
lcOldError = ON('ERROR')
*-- 在INI 文件中读取窗口位置
IF GetPrivStr("WindowPositions", lcEntry, "", @lcBuffer, LEN(lcBuffer), CURDIR() + "formposi.ini") > 0
*-- 如果分解参数时出现错误,
*-- 忽略该串并使用表单的默认值
ON ERROR llError = .T.
lnCommaPos = AT(",", lcBuffer)
lnTop = VAL(LEFT(lcBuffer, lnCommaPos - 1))
lnLeft = VAL(SUBSTR(lcBuffer, lnCommaPos +
相关文章推荐
- 如何使用Python3读写INI配置文件
- 如何使用Python3读写INI配置文件
- python3 如何读写配置文件(ini)
- 如何在 VFP 中读写 INI 文件
- C/C++ 关于如何读写ini配置文件
- C#编程如何编写的自动读写配置文件.ini格式
- C++读写ini配置文件
- 在C#中读写INI配置文件
- 在C#中读写INI配置文件
- C++读写ini配置文件
- 在VC中读写ini配置文件
- 用java读写ini配置文件
- QT 使用QSettings 读写ini配置文件
- C#常用操作类库二(ini配置文件读写)
- WinMoblie 利用EVC读写INI,XML配置文件
- [转]MFC读写读写读写读写ini配置文件配置文件配置文件配置文件 -----Email:liping_xiong@163.com
- [WPF]C#读写ini配置文件【个人学习用】
- 读写INI配置文件
- VC++读写INI配置文件
- Windows系统中C#读写ini配置文件的程序代码示例分享