;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
:filename: ini-demo.asm
;function: demo the operation of ini file
;author: purple endurer
;
;log
;=============================
;2005-05-26 created!
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
.386
.model flat, stdcall
option casemap:none
include /masm32/include/windows.inc
include /masm32/include/kernel32.inc
include /masm32/include/user32.inc
includelib /masm32/lib/user32.lib
includelib /masm32/lib/kernel32.lib
m_msgbox macro lpstrmsg, dwicon
invoke messagebox, null, lpstrmsg, addr g_szmsgcaption, dwicon
endm
.data
g_szmsgcaption db "ini demo", 0
g_szinifilespec db "./test.ini", 0
g_szkeyfilename db "filename", 0
g_szkeyfilesize db "filesize", 0
g_szsectinfo db "info", 0
g_szfmt4int db "%s的值为%d", 0
g_szfailreadkey db "fail to read key!", 0
g_szfailwritestr db "fail to write string!", 0
g_szone db "1", 0
.data?
g_szbuf db 256 dup (?)
.code
start:
; getprivateprofilestring - 从 ini 文件的某个 section 取得一个 key 的字符串,它的原形是:
; getprivateprofilestring(
; lpctstr lpappname, // 指向包含 section 名称的字符串地址
; lpctstr lpkeyname, // 指向包含 key 名称的字符串地址
; lpctstr lpdefault, // 如果 key 值没有找到,则将缺省的字符串复制到返回字符串的缓冲区, 不能是null
; lptstr lpreturnedstring, // 返回字符串的缓冲区地址
; dword nsize // 缓冲区的长度
; lpctstr lpfilename // ini 文件的文件名
invoke getprivateprofilestring, addr g_szsectinfo, addr g_szkeyfilename, addr g_szfailreadkey, addr g_szbuf, sizeof g_szbuf, addr g_szinifilespec
m_msgbox addr g_szbuf, mb_iconerror
; getprivateprofileint - 从 ini 文件的某个 section 取得一个 key 的整数值,它的原形是:
;
; getprivateprofileint(
; lpctstr lpappname, // 指向包含 section 名称的字符串地址
; lpctstr lpkeyname, // 指向包含 key 名称的字符串地址
; int ndefault // 如果 key 值没有找到,则返回缺省的值是多少
; lpctstr lpfilename // ini 文件的文件名
invoke getprivateprofileint, addr g_szsectinfo, addr g_szkeyfilesize, 0, addr g_szinifilespec
invoke wsprintf, addr g_szbuf, addr g_szfmt4int, addr g_szkeyfilesize, eax
m_msgbox addr g_szbuf, mb_iconerror
; writeprivateprofilestring - 将一个 key 值写入 ini 文件的指定 section 中,它的原形是:
; writeprivateprofilestring(
; lpctstr lpappname, // 指向包含 section 名称的字符串地址
; lpctstr lpkeyname, // 指向包含 key 名称的字符串地址
; lpctstr lpstring // 要写的字符串地址
; lpctstr lpfilename // ini 文件的文件名,如果文件不存在, 系统会自动创建
invoke writeprivateprofilestring, addr g_szsectinfo, addr g_szkeyfilename, addr g_szmsgcaption, addr g_szinifilespec
.if eax==null
m_msgbox addr g_szfailwritestr, mb_iconerror
.endif
invoke writeprivateprofilestring, addr g_szsectinfo, addr g_szkeyfilesize, addr g_szone, addr g_szinifilespec
.if eax==null
m_msgbox addr g_szfailwritestr, mb_iconerror
.endif
invoke exitprocess,null
end start
本文提供了一个使用MASM编写的示例程序,演示了如何通过API读取和写入INI文件中的键值。包括获取字符串、获取整数及写入字符串等操作。

2576

被折叠的 条评论
为什么被折叠?



