You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

790 lines
26 KiB
C++

2 years ago
/*-----------------------------------------------------------------------------------
ƽ̨<EFBFBD>޹ص<EFBFBD>INI<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD> V1.65
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2002.10.3
----------------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------------
[<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼]:
(1) V1.0 2002.8.13 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>windowsͬ<EFBFBD><EFBFBD>API<EFBFBD>ĵ<EFBFBD><EFBFBD>÷<EFBFBD>ʽʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD>
(2) V1.1 2002.9.13 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BUG
1. <EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>Ŀʱ<EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2. д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>β<EFBFBD><EFBFBD>ԭ<EFBFBD>ȵij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>б<EFBFBD>ɾ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>û<EFBFBD>а<EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚض<EFBFBD><EFBFBD>ļ<EFBFBD>
(3) V1.2 2002.9.18 <EFBFBD><EFBFBD>QGetPrivateProfileInt()<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(4) V1.3 2002.9.19 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BUG
1. <EFBFBD><EFBFBD>StrTrimLeft, StrTrimRight<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD>TAB<EFBFBD>ַ<EFBFBD>(ASC<EFBFBD><EFBFBD>Ϊ9)<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ini
<EFBFBD>ļ<EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>͵Ȳ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>TAB<EFBFBD><EFBFBD>
2. <EFBFBD>Ӷ<EFBFBD>ȡ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD>޳<EFBFBD>";"<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>StrTrimAll()<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ɾ<EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ұ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĿո<EFBFBD><EFBFBD><EFBFBD>TAB<EFBFBD>ַ<EFBFBD>
(5) V1.4a 2002.9.20 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ν<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD>
OpenPort()<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>30<EFBFBD>Ϊ16<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(6) V1.41a 2002.9.23 <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ζ<EFBFBD><EFBFBD>ļ<EFBFBD>
ʱ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӵӻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫÿ<EFBFBD>ζ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,OpenPort()<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>14<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>Щǣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD>֪Ŀ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD>-<EFBFBD>ر<EFBFBD>ģʽ
(7) V1.5 2002.9.23 ִ<EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>
1. <EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>QGetPrivateProfileString()<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD>Ϊ<EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>в<EFBFBD><EFBFBD>Ҷ<EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>Կ<EFBFBD><EFBFBD>ٶ<EFBFBD>λ<EFBFBD>ε<EFBFBD>λ<EFBFBD><EFBFBD>,Ȼ<EFBFBD><EFBFBD><EFBFBD>Ӹ<EFBFBD>λ<EFBFBD>ÿ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ȡ,<EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>INI<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>зֶδ<EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><EFBFBD>ݶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱҲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD>
<EFBFBD><EFBFBD>Ҫ<EFBFBD>ҵĶο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>INI<EFBFBD>ļ<EFBFBD>β<EFBFBD><EFBFBD><EFBFBD>򲻴<EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD>ʹЧ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>󽵵ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ʹ<EFBFBD>ҵ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD><EFBFBD>׵<EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD>Ρ<EFBFBD>
ʹ<EFBFBD>ø<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>OpenPort()<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3-4<EFBFBD><EFBFBD>.
2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WritePrivateProfileString()<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>10<EFBFBD><EFBFBD>,<EFBFBD>Ҷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱû<EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD>
(8) V1.6 2002.9.27 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD>ȡini<EFBFBD>ļ<EFBFBD>ʱƽ̨<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>޹<EFBFBD><EFBFBD>ԣ<EFBFBD>
Ϊ<EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD>ȡһ<EFBFBD>еIJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>޹<EFBFBD>,ֻ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>з<EFBFBD>(0x0A),<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fgets()<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>windows<EFBFBD>µ<EFBFBD>ini<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>س<EFBFBD><EFBFBD><EFBFBD>(0x0D),<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x0A,<EFBFBD>ɱ<EFBFBD>֤windows<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>unix<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>ini<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
(9) V1.65 2002.10.3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>provdata.ini<EFBFBD><EFBFBD>дʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>ͷ<EFBFBD><EFBFBD>ڸ<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>б<EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"//"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";"
2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>β<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'\'<EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸Ķ<EFBFBD>:
1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD>Ķ<EFBFBD>ȡ<EFBFBD><EFBFBD>)
2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ֱ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>ͷ<EFBFBD>(ȱʡΪ';')<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>(ȱʡΪ'\')
-----------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------
[ʹ<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>]:
(1) <EFBFBD>򲿷<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺͲ<EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>з<EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>unix<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>OS_UNIX<EFBFBD><EFBFBD>
(2) <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ļ<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>INI<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>:
Ҫ<EFBFBD><EFBFBD>'['<EFBFBD><EFBFBD>']'<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>пո񡣲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>INI<EFBFBD>ļ<EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽΪ"[ xxx ]"<EFBFBD><EFBFBD>
ֻ<EFBFBD><EFBFBD>"[xxx]"<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
-------------------------------------------------------------------------------------*/
#include "string.h"
#include "stdio.h"
#include "common.h"
#include "inifile.h"
#include <stdlib.h>
2 years ago
//#include <qglobal.h>
/*-------------------------------------------------------------------------------------
ƽ̨<EFBFBD>޹ص<EFBFBD>INI<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>),<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>API<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ֻ<EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>const char*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>char*
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>DWORD<EFBFBD>ij<EFBFBD>int,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD>ȡ<EFBFBD>ֽڸ<EFBFBD><EFBFBD><EFBFBD>(ͬ<EFBFBD><EFBFBD>API<EFBFBD><EFBFBD><EFBFBD><EFBFBD>DWORD<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>˶<EFBFBD>ȡ<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־(int<EFBFBD><EFBFBD><EFBFBD><EFBFBD>),<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>
-------------------------------------------------------------------------------------*/
int QGetPrivateProfileString(
const char* lpszSectionName, //<2F><><EFBFBD><EFBFBD>
const char* lpszKeyName, //<2F><><EFBFBD><EFBFBD>
const char* lpszDefault, //ȱʡ<C8B1>ַ<EFBFBD><D6B7><EFBFBD>
2 years ago
char* lpszReturnedString, //<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
u_32 nSize, //<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
const char* lpszFileName, //ini<6E>ļ<EFBFBD><C4BC><EFBFBD>
const char* lpszRemarkInLineStr, //<2F><><EFBFBD><EFBFBD>ע<EFBFBD>ͷ<EFBFBD>
const char chContinueLineChar //<2F><><EFBFBD>з<EFBFBD><D0B7><EFBFBD>
2 years ago
)
{
FILE* IniFile = NULL;
BOOL bSecFoundFlag = FALSE;
BOOL bKeyFoundFlag = FALSE;
BOOL bEOF = FALSE;
char szLineBuf[MAX_LINE_BUF_LENGTH]; //<2F>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
char szKeyItemBuf[MAX_LINE_BUF_LENGTH*4]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD>ռ<EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>)
char *lpszFileText = NULL; //<2F><><EFBFBD><EFBFBD>INI<4E>ļ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>ַ<EFBFBD><D6B7><EFBFBD>
char *lpszLineBegin = NULL; //һ<>п<EFBFBD>ʼָ<CABC><D6B8>
char *lpszTmp = NULL;
i_32 lFileSize = 0;
int iPos, iRetVal;
BOOL bLineContinue = FALSE; //2002.10.3 <20><><EFBFBD>б<EFBFBD>־
/*---------------------------------------------------------------------------------
char szLineEndStr[3]; //<2F><>ĩβ<C4A9><CEB2><EFBFBD>з<EFBFBD><D0B7><EFBFBD>
memset(szLineEndStr, 0, 3);
#ifdef OS_UNIX
strcpy(szLineEndStr, "\n"); //UNIX<49>ı<EFBFBD><C4B1>ļ<EFBFBD><C4BC><EFBFBD>ĩֻ<C4A9><D6BB>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>'\n'
#else
strcpy(szLineEndStr, "\r\n"); //Windows<77>ı<EFBFBD><C4B1>ļ<EFBFBD><C4BC><EFBFBD>ĩ<EFBFBD><C4A9>һ<EFBFBD><D2BB><EFBFBD>س<EFBFBD><D8B3><EFBFBD>'\r',һ<><D2BB><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>'\n'
#endif
----------------------------------------------------------------------------------*/
IniFile = fopen(lpszFileName, "rb"); //<2F><><EFBFBD><EFBFBD><EFBFBD>ƿɶ<C6BF><C9B6><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>(<28>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
if(!IniFile)
{
//qDebug("fopen error, %s", lpszFileName);
return FILE_OPEN_ERROR;
}
fseek(IniFile, 0, SEEK_END); //<2F><>λ<EFBFBD><CEBB><EFBFBD>ļ<EFBFBD>β<EFBFBD><CEB2>
lFileSize = ftell(IniFile); //<2F><>ȡ<EFBFBD>ļ<EFBFBD>βָ<CEB2><D6B8>λ<EFBFBD><CEBB>(<28><>ֵ=<3D>ļ<EFBFBD><C4BC>ܳ<EFBFBD>=<3D>ļ<EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ+1)
lpszFileText = new char[lFileSize+1];
memset(lpszFileText, 0, lFileSize+1);
fseek(IniFile, 0, SEEK_SET); //<2F><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ͷ
fread(lpszFileText, 1, lFileSize, IniFile); //<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
fclose(IniFile); //<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1>ļ<EFBFBD>
lpszLineBegin = lpszFileText;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*----------------------------------------------------------------------------
//while(!feof(IniFile))
while(!bEOF)
{
//ReadLineFromFile(IniFile, szLineBuf, MAX_LINE_BUF_LENGTH); //<2F><>ȡһ<C8A1><D2BB>
memset(szLineBuf, 0, MAX_LINE_BUF_LENGTH);
lpszTmp = strstr(lpszLineBegin, szLineEndStr); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ĩ
if(lpszTmp != NULL)
{
strncpy(szLineBuf, lpszLineBegin, min(MAX_LINE_BUF_LENGTH-1, lpszTmp-lpszLineBegin));
lpszLineBegin = lpszTmp + strlen(szLineEndStr);
}
else //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
{
strncpy(szLineBuf, lpszLineBegin, min(MAX_LINE_BUF_LENGTH-1, lpszFileText+lFileSize-lpszLineBegin));
bEOF = TRUE;
}
StrTrimAll(szLineBuf);
if( szLineBuf[0] == ';' || szLineBuf[0] == 0 ) continue; //ע<><D7A2><EFBFBD>кͿ<D0BA><CDBF>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>
//<2F><>һ<EFBFBD><D2BB>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD><DCB4>ڵ<EFBFBD>";"ע<>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD>޳<EFBFBD>(<28><><EFBFBD><EFBFBD>key=value<75><65>value<75>в<EFBFBD><D0B2>ܺ<EFBFBD><DCBA><EFBFBD>;<3B><><EFBFBD>򽫱<EFBFBD><F2BDABB1><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>Ͷ<EFBFBD>ɾ<EFBFBD><C9BE>
lpszTmp = strchr(szLineBuf, ';');
if(lpszTmp != NULL) *lpszTmp = 0;
StrTrimAll(szLineBuf); //zl 2002.9.19 ";"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD>пո<D0BF><D5B8><EFBFBD>TAB<41>ַ<EFBFBD>,<2C><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD>Щ<EFBFBD>ָ<EFBFBD><D6B8>ַ<EFBFBD>
iPos = strlen(szLineBuf) - 1;
if(szLineBuf[0] == '[' && szLineBuf[iPos] == ']') //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
{
szLineBuf[iPos] = 0; //ȥ<><C8A5>"["<22><>"]",<2C><><EFBFBD>ڱȽ<DAB1>
lpszTmp = &szLineBuf[1];
if( strcmp(lpszTmp, lpszSectionName) == 0 ) //ָ<><D6B8><EFBFBD>Ķ<EFBFBD><C4B6>ҵ<EFBFBD><D2B5><EFBFBD>
{
bSecFoundFlag = TRUE;
break;
}
}
}
----------------------------------------------------------------------------*/
//zl 2002.9.23 <20>µĶ<C2B5><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨(ֱ<><D6B1><EFBFBD>ڰ<EFBFBD><DAB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ini<6E>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ж<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>)
char szFindStr[MAX_LINE_BUF_LENGTH]; //<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
sprintf(szFindStr, "[%s]", lpszSectionName);
while(!bEOF)
{
lpszTmp = strstr(lpszLineBegin, szFindStr);
if( lpszTmp != NULL ) //<2F>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD>Ƿ<EFBFBD><C7B7>Ϸ<EFBFBD>
{
lpszLineBegin = lpszTmp + strlen(szFindStr); //<2F><><EFBFBD><EFBFBD><EFBFBD>µIJ<C2B5><C4B2><EFBFBD><EFBFBD><EFBFBD>ʼλ<CABC><CEBB>
if( lpszLineBegin > (lpszFileText + lFileSize -1) ) bEOF = TRUE;
if( lpszTmp == lpszFileText ) //"[xxx]"<22><><EFBFBD>ļ<EFBFBD><C4BC>Ŀ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ݣ<EFBFBD>Ϊ<EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD>
{
bSecFoundFlag = TRUE;
break;
}
/*----------------------------------------------------------------------------
<EFBFBD><EFBFBD>'['<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>0xA,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǺϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿո<EFBFBD><EFBFBD><EFBFBD>tab<EFBFBD>ַ<EFBFBD>(ASC<EFBFBD><EFBFBD>9)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD>ַ<EFBFBD>,<EFBFBD>ö<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>Ƿ<EFBFBD>, ']'<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>
----------------------------------------------------------------------------*/
lpszTmp--;
while( lpszTmp >= lpszFileText )
{
if( *lpszTmp == 0xA )
{
bSecFoundFlag = TRUE;
break;
}
else if( *lpszTmp == ' ' || *lpszTmp == 9 )
lpszTmp--;
else
break;
}
if( bSecFoundFlag ) break; //<2F>˳<EFBFBD><CBB3><EFBFBD>ѭ<EFBFBD><D1AD>
}
else
break; //û<>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>,<2C>˳<EFBFBD>
}
if( !bSecFoundFlag )
{
iRetVal = SECTION_NOT_FOUND;
goto func_end;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>λ<EFBFBD>κ󣬶<CEBA><F3A3ACB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ж<EFBFBD>ȡɨ<C8A1>ʽ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>ö<EFBFBD><C3B6><EFBFBD>)
while(!bEOF)
{
if( !bLineContinue )
memset(szKeyItemBuf, 0, sizeof(szKeyItemBuf)); //<2F>ؼ<EFBFBD>,<2C><><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memset(szLineBuf, 0, MAX_LINE_BUF_LENGTH);
//zl 2002.9.27 Ϊ<><CEAA>֤<EFBFBD><D6A4>ȡһ<C8A1>еIJ<D0B5><C4B2><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD>ļ<EFBFBD><C4BC><EFBFBD>ʽ<EFBFBD>޹<EFBFBD><><D6BB><EFBFBD>һ<EFBFBD><D2BB>з<EFBFBD>(0x0A),<2C><><EFBFBD><EFBFBD>fgets()<29><><EFBFBD><EFBFBD>
lpszTmp = strchr(lpszLineBegin, 0x0A);
if(lpszTmp != NULL)
{
strncpy(szLineBuf, lpszLineBegin, min(MAX_LINE_BUF_LENGTH-1, lpszTmp-lpszLineBegin)); //<2F><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡһ<C8A1><D2BB>
/* <20><>windows<77>ı<EFBFBD><C4B1>ļ<EFBFBD>ʱ,ÿ<><C3BF>β<EFBFBD><CEB2><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>س<EFBFBD><D8B3><EFBFBD>(0x0D),<2C><><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
if( szLineBuf[strlen(szLineBuf)-1] == 0x0D )
szLineBuf[strlen(szLineBuf)-1] = 0;
lpszLineBegin = lpszTmp + 1; //1<><31>ʾ"0x0A"һ<><D2BB><EFBFBD>ַ<EFBFBD>
}
else //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
{
strncpy(szLineBuf, lpszLineBegin, min(MAX_LINE_BUF_LENGTH-1, lpszFileText+lFileSize-lpszLineBegin));
bEOF = TRUE;
}
StrTrimAll(szLineBuf);
//ȫע<C8AB><D7A2><EFBFBD>кͿ<D0BA><CDBF>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>
if( szLineBuf[0] == ';' || szLineBuf[0] == 0 )
{
if( bLineContinue && strlen(szKeyItemBuf) > 0 ) //2002.10.7 <20><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>szKeyItemBuf<75><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD>continue<75><65><EFBFBD><EFBFBD><C2B6><EFBFBD>һ<EFBFBD><D2BB>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>(<28><><EFBFBD>л<EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>ʧ
bLineContinue = FALSE;
else
{
bLineContinue = FALSE;
continue;
}
}
else
{
//2002.10.3 <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>з<EFBFBD>Ϊ<EFBFBD><CEAA>ĩ<EFBFBD><C4A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ǿո<C7BF><D5B8><EFBFBD>TAB<41>ַ<EFBFBD>,ȱʡΪ'\'
if( szLineBuf[strlen(szLineBuf)-1] == chContinueLineChar )
{
bLineContinue = TRUE;
szLineBuf[strlen(szLineBuf)-1] = 0; //ȥ<><C8A5><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>
StrTrimAll(szLineBuf);
strcat(szKeyItemBuf, szLineBuf);
continue;
}
else //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
{
bLineContinue = FALSE;
strcat(szKeyItemBuf, szLineBuf);
}
}
//<2F><>һ<EFBFBD><D2BB>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD><DCB4>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>(ȱʡ<C8B1><CAA1><EFBFBD><EFBFBD>ע<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>";")<29>޳<EFBFBD>
//lpszTmp = strchr(szLineBuf, ';');
lpszTmp = strstr(szKeyItemBuf, lpszRemarkInLineStr); //2002.10.3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>ͷ<EFBFBD>
if(lpszTmp != NULL) *lpszTmp = 0;
StrTrimAll(szKeyItemBuf); //zl 2002.9.19 ";"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD>пո<D0BF><D5B8><EFBFBD>TAB<41>ַ<EFBFBD>,<2C><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD>Щ<EFBFBD>ָ<EFBFBD><D6B8>ַ<EFBFBD>
iPos = strlen(szKeyItemBuf)-1;
if(szKeyItemBuf[0] == '[' && szKeyItemBuf[iPos] == ']') //<2F>ֵ<EFBFBD><D6B5><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Σ<EFBFBD>˵<EFBFBD><CBB5>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>ָ<EFBFBD><D6B8>keyû<79><C3BB><EFBFBD>ҵ<EFBFBD>
{
iRetVal = KEY_NOT_FOUND;
goto func_end;
}
lpszTmp = strchr(szKeyItemBuf, '='); //<2F><>λ'='
if(lpszTmp == NULL) continue; //<2F><><EFBFBD><EFBFBD><EFBFBD>ȺŵķǶ<C4B7><C7B6>б<EFBFBD><D0B1><EFBFBD>Ϊ<EFBFBD><CEAA>Ч<EFBFBD><D0A7>
*lpszTmp = 0; //Ϊ<><CEAA><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'='λ<>ý<EFBFBD>szLineBuf<75><66><EFBFBD>м<EFBFBD><D0BC>ض<EFBFBD>, <20><>szLineBuf<75>ֳ<EFBFBD>key<65><79>value<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
StrTrimAll(szKeyItemBuf); //<2F><>ʱszLineBuf<75><66>key
if(strcmp(szKeyItemBuf, lpszKeyName) == 0) //<2F>ҵ<EFBFBD><D2B5><EFBFBD>ָ<EFBFBD><D6B8>key
{
lpszTmp++;
StrTrimAll(lpszTmp); //lpszTmp++<2B><>key<65><79>Ӧ<EFBFBD><D3A6>value
if( strlen(lpszTmp) < nSize )
strcpy(lpszReturnedString, lpszTmp); //<2F><><EFBFBD><EFBFBD>key<65><79>Ӧ<EFBFBD><D3A6>value
else
strncpy(lpszReturnedString, lpszTmp, strlen(lpszTmp));
iRetVal = 1; //1<><31>ʾ<EFBFBD><CABE>ȷ
bKeyFoundFlag = TRUE;
break;
}
}
if( !bKeyFoundFlag ) iRetVal = KEY_NOT_FOUND;
func_end:
delete [] lpszFileText;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱȱʡ<C8B1><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪNULL<4C><4C><EFBFBD>򷵻<EFBFBD>ȱʡ<C8B1><CAA1><EFBFBD><EFBFBD>
if( iRetVal < 0 && lpszDefault != NULL )
{
if( strlen(lpszDefault) < nSize )
strcpy(lpszReturnedString, lpszDefault);
else
strncpy(lpszReturnedString, lpszDefault, strlen(lpszDefault));
}
return iRetVal;
}
/*-------------------------------------------------------------------------------------
ƽ̨<EFBFBD>޹ص<EFBFBD>INI<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>),<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>API<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ֻ<EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>const char*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>char*,
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>UINT<EFBFBD>ij<EFBFBD>int
-------------------------------------------------------------------------------------*/
int QGetPrivateProfileInt(
const char* lpszSectionName, //<2F><><EFBFBD><EFBFBD>
const char* lpszKeyName, //<2F><><EFBFBD><EFBFBD>
2 years ago
int nDefault, //ȱʡֵ
const char* lpszFileName, //ini<6E>ļ<EFBFBD><C4BC><EFBFBD>
const char* lpszRemarkInLineStr, //<2F><><EFBFBD><EFBFBD>ע<EFBFBD>ͷ<EFBFBD>
const char chContinueLineChar //<2F><><EFBFBD>з<EFBFBD><D0B7><EFBFBD>
2 years ago
)
{
int iRet, iResult;
char szNumStr[256]; //<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
iRet = QGetPrivateProfileString(
lpszSectionName, //<2F><><EFBFBD><EFBFBD>
lpszKeyName, //<2F><><EFBFBD><EFBFBD>
NULL, //ȱʡ<C8B1>ַ<EFBFBD><D6B7><EFBFBD>
szNumStr, //<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
256, //<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
lpszFileName, //INI<4E>ļ<EFBFBD><C4BC><EFBFBD>
lpszRemarkInLineStr, //<2F><><EFBFBD><EFBFBD>ע<EFBFBD>ͷ<EFBFBD>
chContinueLineChar //<2F><><EFBFBD>з<EFBFBD><D0B7><EFBFBD>
);
//qDebug(lpszFileName);
if(iRet < 0) return nDefault; //<2F><><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD>ȱʡֵ
StrTrimAll(szNumStr);
/*--------------------------------------------------------------------------------
<EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ini<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"0x1801"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>16<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ϊatoi<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ16<EFBFBD><EFBFBD><EFBFBD>ƴ<EFBFBD>
2002.9.18 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>֧<EFBFBD>֣<EFBFBD>Ŀǰֻ֧<EFBFBD><EFBFBD>16<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽΪ"0x<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
--------------------------------------------------------------------------------*/
BOOL bIsHexFlag = FALSE;
if( strlen(szNumStr) > 2 )
{
if( szNumStr[0] == '0' && szNumStr[1] == 'x' ) bIsHexFlag = TRUE;
}
if( bIsHexFlag )
iRet = sscanf(&szNumStr[2], "%x", &iResult); //16<31><36><EFBFBD><EFBFBD>
else
iRet = sscanf(szNumStr, "%d", &iResult); //10<31><30><EFBFBD><EFBFBD>
if( iRet != 1 ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7>Ļ<EFBFBD>,Ӧֻת<D6BB><D7AA>һ<EFBFBD><D2BB>field,<2C>ʷ<EFBFBD><CAB7><EFBFBD>ֵ<EFBFBD><D6B5>Ϊ1<CEAA><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>,<2C><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ȱʡֵ
return nDefault;
else
return iResult; //<2F><>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>
}
/*-------------------------------------------------------------------------------------
ƽ̨<EFBFBD>޹ص<EFBFBD>INI<EFBFBD>ļ<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>API<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ֻ<EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>const char*<EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>char*
Ŀǰ<EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD>
-------------------------------------------------------------------------------------*/
BOOL QWritePrivateProfileString(
const char* lpszSectionName, //<2F><><EFBFBD><EFBFBD>
const char* lpszKeyName, //<2F><><EFBFBD><EFBFBD>
const char* lpszString, //Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
const char* lpszFileName //INI<4E>ļ<EFBFBD><C4BC><EFBFBD>
2 years ago
)
{
FILE* IniFile;
char szLineBuf[MAX_LINE_BUF_LENGTH];
char *lpszFrontBlock = NULL, *lpszRearBlock = NULL; //װ<><D7B0>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ָ<EFBFBD><D6B8>
char *lpszTmp = NULL;
i_32 lPrePos = 0, lCurPos = 0; //ǰһ<C7B0>ζ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ζ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB>
bool bSecFoundFlag = FALSE;
bool bKeyFoundFlag = FALSE;
bool bMeetAnotherBlock = FALSE; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
i_32 lEndPos;
int iPos;
char szLineEndStr[3]; //<2F><>ĩβ<C4A9><CEB2><EFBFBD>з<EFBFBD><D0B7><EFBFBD>
#ifdef OS_UNIX
strcpy(szLineEndStr, "\n"); //UNIX<49>ı<EFBFBD><C4B1>ļ<EFBFBD><C4BC><EFBFBD>ĩֻ<C4A9><D6BB>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>'\n'
#else
strcpy(szLineEndStr, "\r\n"); //Windows<77>ı<EFBFBD><C4B1>ļ<EFBFBD><C4BC><EFBFBD>ĩ<EFBFBD><C4A9>һ<EFBFBD><D2BB><EFBFBD>س<EFBFBD><D8B3><EFBFBD>'\r',һ<><D2BB><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>'\n'
#endif
IniFile = fopen(lpszFileName, "r+b"); //<2F><><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD>ʽ<EFBFBD>򿪣<EFBFBD><F2BFAAA3>ɶ<EFBFBD><C9B6><EFBFBD>д(<28><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
if(!IniFile) return false;
fseek(IniFile, 0, SEEK_END); //<2F><>λ<EFBFBD><CEBB><EFBFBD>ļ<EFBFBD>β<EFBFBD><CEB2>
lEndPos = ftell(IniFile); //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>β<EFBFBD><CEB2>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB>(<28><>ֵ=<3D>ļ<EFBFBD><C4BC>ܳ<EFBFBD>=<3D>ļ<EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ+1)
fseek(IniFile, 0, SEEK_SET); //<2F><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ͷ
//<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>section
while(!feof(IniFile))
{
lPrePos = lCurPos; //<2F><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4>ļ<EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB>
ReadLineFromFile(IniFile, szLineBuf, MAX_LINE_BUF_LENGTH); //<2F><>ȡһ<C8A1><D2BB>
lCurPos = ftell(IniFile); //<2F><>ǰ<EFBFBD>ļ<EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB>
StrTrimAll(szLineBuf);
if( szLineBuf[0] == ';' || szLineBuf[0] == 0 ) continue; //ע<><D7A2><EFBFBD>кͿ<D0BA><CDBF>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>
//<2F><>һ<EFBFBD><D2BB>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD><DCB4>ڵ<EFBFBD>";"ע<>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD>޳<EFBFBD>(<28><><EFBFBD><EFBFBD>key=value<75><65>value<75>в<EFBFBD><D0B2>ܺ<EFBFBD><DCBA><EFBFBD>;<3B><><EFBFBD>򽫱<EFBFBD><F2BDABB1><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>Ͷ<EFBFBD>ɾ<EFBFBD><C9BE>
lpszTmp = strchr(szLineBuf, ';');
if(lpszTmp != NULL) *lpszTmp = 0;
StrTrimAll(szLineBuf); //zl 2002.9.19 ";"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD>пո<D0BF><D5B8><EFBFBD>TAB<41>ַ<EFBFBD>,<2C><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD>Щ<EFBFBD>ָ<EFBFBD><D6B8>ַ<EFBFBD>
iPos = strlen(szLineBuf) - 1;
if(szLineBuf[0] == '[' && szLineBuf[iPos] == ']') //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
{
szLineBuf[iPos] = 0; //ȥ<><C8A5>"["<22><>"]",<2C><><EFBFBD>ڱȽ<DAB1>
lpszTmp = &szLineBuf[1];
if( strcmp(lpszTmp, lpszSectionName) == 0 ) //ָ<><D6B8><EFBFBD>Ķ<EFBFBD><C4B6>ҵ<EFBFBD><D2B5><EFBFBD>
{
bSecFoundFlag = TRUE;
break;
}
}
}
//[<5B><><EFBFBD><EFBFBD>һ]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>ҵ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>,<2C><>ָ<EFBFBD><D6B8>key<65>϶<EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>˼<EFBFBD>Ҫ<EFBFBD>½<EFBFBD>sectionҲҪ<D2B2>½<EFBFBD>key,
// <20><>Щ<EFBFBD><D0A9><EFBFBD>ݾ<EFBFBD>ֱ<EFBFBD><D6B1>׷<EFBFBD>ӵ<EFBFBD><D3B5>ļ<EFBFBD>β<EFBFBD><CEB2>,ͬʱԼ<CAB1><D4BC><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>β<EFBFBD><CEB2><EFBFBD>½<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʱ,Ĭ<><C4AC><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>
// ׷<>ӻ<EFBFBD><D3BB>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>һ<EFBFBD><D2BB>
if( !bSecFoundFlag )
{
char szNewSection[2048];
memset(szNewSection, 0, 2048);
//<2F><><EFBFBD><EFBFBD><EFBFBD>µĶ<C2B5><C4B6>ַ<EFBFBD><D6B7><EFBFBD>
sprintf(szNewSection, "%s[%s]%s%s = %s%s", szLineEndStr, lpszSectionName, szLineEndStr, lpszKeyName, lpszString, szLineEndStr);
fseek(IniFile, 0, SEEK_END);
fwrite(szNewSection, sizeof(char), strlen(szNewSection), IniFile);
goto func_end;
}
//<2F>ҵ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ټ<EFBFBD><D9BC><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>key
while(!feof(IniFile))
{
lPrePos = lCurPos; //<2F><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4>ļ<EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB>
ReadLineFromFile(IniFile, szLineBuf, MAX_LINE_BUF_LENGTH); //<2F><>ȡһ<C8A1><D2BB>
lCurPos = ftell(IniFile); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>ļ<EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB>
StrTrimAll(szLineBuf);
if( szLineBuf[0] == ';' || szLineBuf[0] == 0 ) continue; //ע<><D7A2><EFBFBD>кͿ<D0BA><CDBF>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>
//<2F><>һ<EFBFBD><D2BB>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD><DCB4>ڵ<EFBFBD>";"ע<>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD>޳<EFBFBD>(<28><><EFBFBD><EFBFBD>key=value<75><65>value<75>в<EFBFBD><D0B2>ܺ<EFBFBD><DCBA><EFBFBD>;<3B><><EFBFBD>򽫱<EFBFBD><F2BDABB1><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>Ͷ<EFBFBD>ɾ<EFBFBD><C9BE>
lpszTmp = strchr(szLineBuf, ';');
if(lpszTmp != NULL) *lpszTmp = 0;
StrTrimAll(szLineBuf); //zl 2002.9.19 ";"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD>пո<D0BF><D5B8><EFBFBD>TAB<41>ַ<EFBFBD>,<2C><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD>Щ<EFBFBD>ָ<EFBFBD><D6B8>ַ<EFBFBD>
iPos = strlen(szLineBuf)-1;
if(szLineBuf[0] == '[' && szLineBuf[iPos] == ']')
{
bMeetAnotherBlock = TRUE; //<2F>ֵ<EFBFBD><D6B5><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Σ<EFBFBD>˵<EFBFBD><CBB5>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>ָ<EFBFBD><D6B8>keyû<79><C3BB><EFBFBD>ҵ<EFBFBD>
break;
}
lpszTmp = strchr(szLineBuf, '='); //<2F><>λ'='
if(lpszTmp == NULL) continue; //<2F><><EFBFBD><EFBFBD><EFBFBD>ȺŵķǶ<C4B7><C7B6>б<EFBFBD><D0B1><EFBFBD>Ϊ<EFBFBD><CEAA>Ч<EFBFBD><D0A7>
*lpszTmp = 0; //Ϊ<><CEAA><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'='λ<>ý<EFBFBD>szLineBuf<75><66><EFBFBD>м<EFBFBD><D0BC>ض<EFBFBD>, <20><>szLineBuf<75>ֳ<EFBFBD>key<65><79>value<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
StrTrimAll(szLineBuf); //<2F><>ʱszLineBuf<75><66>key
/* <20>ҵ<EFBFBD><D2B5><EFBFBD>ָ<EFBFBD><D6B8>key */
if(strcmp(szLineBuf, lpszKeyName) == 0) //<2F>ñȽϴ<C8BD>Сд<D0A1><D0B4><EFBFBD><EFBFBD>
{
char szKeyValBlock[2048];
memset(szKeyValBlock, 0, 2048);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֯key = value<75>ԣ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>޸<EFBFBD>Ŀ<EFBFBD><C4BF>
sprintf(szKeyValBlock, "%s = %s%s", szLineBuf, lpszString, szLineEndStr);
//ע<><EFBFBD><E2A3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ԭ<EFBFBD>е<EFBFBD>key=value<75><65>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD>
//<2F><>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>lPrePos<6F><73>lCurPos֮<73><D6AE><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>(<28><>ԭ<EFBFBD><D4AD>key=value<75><65>)<29><>Ҫ,
//<2F>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BBBB><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD>
lpszRearBlock = new char[lEndPos-lCurPos+1];
memset(lpszRearBlock, 0, lEndPos-lCurPos+1);
fread(lpszRearBlock, sizeof(char), lEndPos-lCurPos, IniFile); //<2F>ӵ<EFBFBD>ǰλ<C7B0>ÿ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>ΪlEndPos-lCurPos, ע<><D7A2>lEndPos<6F><73>end<6E><64>β<EFBFBD><CEB2><EFBFBD>ŵ<EFBFBD>λ<EFBFBD><CEBB>,<2C><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ļ<EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD>ô<EFBFBD>1)
lpszFrontBlock = new char[lPrePos+1];
memset(lpszFrontBlock, 0, lPrePos+1);
fseek(IniFile, 0, SEEK_SET);
fread(lpszFrontBlock, sizeof(char), lPrePos, IniFile); //<2F><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>ΪlPrePos,<2C><>Ϊ<EFBFBD>ļ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>0<EFBFBD><30>ʼ,lPrePosλ<73><CEBB>ǰ<EFBFBD><C7B0><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD>lPrePos)
//<2F>ȹر<C8B9><D8B1>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ÿ<EFBFBD>д<EFBFBD><D0B4>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>ļ<EFBFBD><C4BC>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>Ҫ<EFBFBD><D2AA><EFBFBD>ر<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>,<2C><>unix<69><78>windows<77><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ȵĵ<C8B5><C4B5>ò<EFBFBD>ͬ,<2C>Ƚ<EFBFBD><C8BD>
fclose(IniFile);
IniFile = fopen(lpszFileName, "wb"); //<2F><>д<EFBFBD><D0B4>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>(<28><><EFBFBD>ļ<EFBFBD><C4BC>Ѵ<EFBFBD><D1B4><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>)
if(!IniFile) return FALSE;
fwrite(lpszFrontBlock, sizeof(char), lPrePos, IniFile);
fwrite(szKeyValBlock, sizeof(char), strlen(szKeyValBlock), IniFile);
fwrite(lpszRearBlock, sizeof(char), lEndPos-lCurPos, IniFile);
delete [] lpszFrontBlock;
delete [] lpszRearBlock;
bKeyFoundFlag = TRUE;
break;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>ҵ<EFBFBD>ָ<EFBFBD><D6B8>key,<2C><>Ҫ<EFBFBD>½<EFBFBD>key=value<75><65>
if( !bKeyFoundFlag )
{
char szKeyBlock[2048];
memset(szKeyBlock, 0, 2048);
if(bMeetAnotherBlock) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>,<2C><>ʱҪ<CAB1>ڸö<DAB8>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD><EFBFBD>key=value<75><65>
{
sprintf(szKeyBlock, "%s = %s%s", lpszKeyName, lpszString, szLineEndStr);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lPrePosΪ<73><CEAA><EFBFBD>߽<EFBFBD><DFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lPrePos<6F><73>lCurPos<6F><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>Ҫ<EFBFBD><D2AA>ͬ,<2C><><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滻, <20><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>lPrePosΪ<73><EFBFBD>ļ<EFBFBD><C4BC>ֿ<EFBFBD>,<2C><><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
fseek(IniFile, lPrePos, SEEK_SET); //<2F><>λ<EFBFBD><CEBB>lPrePos(<28><><EFBFBD><EFBFBD>lPrePos<6F><73><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>εĿ<CEB5>ʼ<EFBFBD>ַ<EFBFBD>,<2C><>"[")
lpszRearBlock = new char[lEndPos-lPrePos+1];
memset(lpszRearBlock, 0, lEndPos-lPrePos+1);
fread(lpszRearBlock, sizeof(char), lEndPos-lPrePos, IniFile); //<2F>ӵ<EFBFBD>ǰλ<C7B0>ÿ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>ΪlEndPos-lPrePos)
lpszFrontBlock = new char[lPrePos+1];
memset(lpszFrontBlock, 0, lPrePos+1);
fseek(IniFile, 0, SEEK_SET);
fread(lpszFrontBlock, sizeof(char), lPrePos, IniFile); //<2F><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>ΪlPrePos)
//<2F>ȹر<C8B9><D8B1>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ÿ<EFBFBD>д<EFBFBD><D0B4>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>ļ<EFBFBD><C4BC>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>Ҫ<EFBFBD><D2AA><EFBFBD>ر<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>,<2C><>unix<69><78>windows<77><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ȵĵ<C8B5><C4B5>ò<EFBFBD>ͬ,<2C>Ƚ<EFBFBD><C8BD>
fclose(IniFile);
IniFile = fopen(lpszFileName, "wb"); //<2F><>д<EFBFBD><D0B4>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>(<28><><EFBFBD>ļ<EFBFBD><C4BC>Ѵ<EFBFBD><D1B4><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>)
if(!IniFile) return FALSE;
fwrite(lpszFrontBlock, sizeof(char), lPrePos, IniFile);
fwrite(szKeyBlock, sizeof(char), strlen(szKeyBlock), IniFile);
fwrite(lpszRearBlock, sizeof(char), lEndPos-lPrePos, IniFile);
delete [] lpszFrontBlock;
delete [] lpszRearBlock;
}
else //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ζ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6>ѵ<EFBFBD><D1B5><EFBFBD><EFBFBD>ļ<EFBFBD>β<EFBFBD><CEB2>, ׷<><D7B7>key=value<75>鵽β<E9B5BD><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
fseek(IniFile, 0, SEEK_END);
/* <20>統ǰλ<C7B0><CEBB>ǰ<EFBFBD><C7B0><EFBFBD>л<EFBFBD><D0BB>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>˾ٿɷ<D9BF>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֺ<EFBFBD><D6BA><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB> */
if( IfBeforeHasRet(IniFile) )
sprintf(szKeyBlock, "%s = %s%s", lpszKeyName, lpszString, szLineEndStr);
else
sprintf(szKeyBlock, "%s%s = %s%s", szLineEndStr, lpszKeyName, lpszString, szLineEndStr);
fwrite(szKeyBlock, sizeof(char), strlen(szKeyBlock), IniFile);
}
}
func_end:
fclose(IniFile);
return true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>ж<EFBFBD><D0B6>ļ<EFBFBD><C4BC>е<EFBFBD>ǰָ<C7B0><D6B8>λ<EFBFBD><CEBB>ǰ<EFBFBD><C7B0><EFBFBD>Ƿ<EFBFBD><C7B7>л<EFBFBD><D0BB>з<EFBFBD><D0B7><EFBFBD>,ʹ<>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>ļ<EFBFBD><C4BC>Ѿ<EFBFBD><D1BE>򿪲<EFBFBD><F2BFAAB2><EFBFBD><EFBFBD>ļ<EFBFBD>ָ<EFBFBD>붨λ<EBB6A8><CEBB>Ӧ<EFBFBD>е<EFBFBD>λ<EFBFBD><CEBB>
bool IfBeforeHasRet(FILE* pFile)
{
char szTmp[3];
bool bBeforeHasRet = FALSE;
i_32 lOldPos;
memset(szTmp, 0, 3);
lOldPos = ftell(pFile); //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ǰָ<C7B0><D6B8>λ<EFBFBD><CEBB>
/* <20><><EFBFBD><EFBFBD>ǰλ<C7B0><CEBB>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>, <20><>Ϊwindows<77><73><EFBFBD>ǻس<C7BB><D8B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD> */
fseek(pFile, -2, SEEK_CUR);
fread(szTmp, sizeof(char), 2, pFile);
#ifdef OS_UNIX
if( szTmp[1] == 0x0a ) bBeforeHasRet = TRUE;
#else
if( szTmp[0] == 0x0d && szTmp[1] == 0x0a ) bBeforeHasRet = TRUE;
#endif
fseek(pFile, lOldPos, SEEK_SET); //<2F>ָ<EFBFBD>ԭ<EFBFBD>ȵ<EFBFBD><C8B5>ļ<EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB>
return bBeforeHasRet;
}
/*-----------------------------------<2D><><EFBFBD>ߺ<EFBFBD><DFBA><EFBFBD>----------------------------------*/
//<2F><>ָ<EFBFBD><D6B8><EFBFBD>ļ<EFBFBD><C4BC>ж<EFBFBD>ȡһ<C8A1><D2BB>
int ReadLineFromFile(FILE* IniFile, char* lpszLineBuf, int iLen)
{
int iPos;
/*-----------------------------------------------------------------------------
ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>t<EFBFBD><EFBFBD>text<EFBFBD><EFBFBD>ʽ<EFBFBD>򿪣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>س<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>inputʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>fgets()<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>лس<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>binary
<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>β<EFBFBD><EFBFBD>ͬʱ<EFBFBD>лس<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>򿪷<EFBFBD>ʽ<EFBFBD>IJ<EFBFBD>ֱͬ<EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>fgets
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>к<EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>text<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>ֻҪɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><EFBFBD>ż<EFBFBD><EFBFBD>ɣ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>binary<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>жϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱ<EFBFBD><EFBFBD>Ӧtext<EFBFBD><EFBFBD>binary<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ,Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱ<EFBFBD><EFBFBD>ӦWindows<EFBFBD>º<EFBFBD>Unix<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD>ļ<EFBFBD>(unix<EFBFBD>ı<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ĩֻ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0A,û<EFBFBD>лس<EFBFBD><EFBFBD><EFBFBD>)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼: fopen()<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"t"<EFBFBD><EFBFBD>΢<EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>Ansi C ֻ֧<EFBFBD><EFBFBD> "b"ģʽ
----------------------------------------------------------------------------*/
if(fgets(lpszLineBuf, iLen, IniFile) != NULL) //fgets()<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>(0x0A)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>),Ȼ<><C8BB><EFBFBD><EFBFBD>β<EFBFBD><CEB2>׷<EFBFBD><D7B7>һ<EFBFBD><D2BB>NULL<4C>󷵻<EFBFBD>,<2C><><EFBFBD>˻<EFBFBD><CBBB>з<EFBFBD><D0B7><EFBFBD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD>ַ<EFBFBD>
{
iPos = strlen(lpszLineBuf) - 1;
if( lpszLineBuf[iPos-1] == 0x0D ) lpszLineBuf[iPos-1] = 0; //ɾ<><C9BE>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD><DCB4>ڵĻس<C4BB><D8B3><EFBFBD>(0x0D)
if( lpszLineBuf[iPos] == 0x0A ) lpszLineBuf[iPos] = 0; //ɾ<><C9BE>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD><DCB4>ڵĻ<DAB5><C4BB>з<EFBFBD>(0x0A)
}
else
return -1;
return 0; //0<><30>ʾ<EFBFBD><CABE>ȷ
}
/*----------------------------------------------------------------------------
//<2F><>ָ<EFBFBD><D6B8><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ж<EFBFBD>ȡһ<C8A1><D2BB>
int ReadLineFromString(char* lpszText, char* lpszLineBuf, int iLen)
{
int iPos;
if(fgets(lpszLineBuf, iLen, IniFile) != NULL) //fgets()<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>(0x0A)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>),Ȼ<><C8BB><EFBFBD><EFBFBD>β<EFBFBD><CEB2>׷<EFBFBD><D7B7>һ<EFBFBD><D2BB>NULL<4C>󷵻<EFBFBD>,<2C><><EFBFBD>˻<EFBFBD><CBBB>з<EFBFBD><D0B7><EFBFBD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD>ַ<EFBFBD>
{
iPos = strlen(lpszLineBuf) - 1;
if( lpszLineBuf[iPos-1] == 0x0D ) lpszLineBuf[iPos-1] = 0; //ɾ<><C9BE>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD><DCB4>ڵĻس<C4BB><D8B3><EFBFBD>(0x0D)
if( lpszLineBuf[iPos] == 0x0A ) lpszLineBuf[iPos] = 0; //ɾ<><C9BE>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD><DCB4>ڵĻ<DAB5><C4BB>з<EFBFBD>(0x0A)
}
else
return -1;
return 0; //0<><30>ʾ<EFBFBD><CABE>ȷ
}
---------------------------------------------------------------------------*/
//ɾ<><C9BE><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>, 2002.9.19<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD>TAB<EFBFBD>ַ<EFBFBD>(ASC<53><43>Ϊ9)<29><><EFBFBD><EFBFBD>
void StrTrimLeft(char* szBuf)
{
char *szBak = NULL;
char *p = szBuf;
if(!szBuf) return;
while(*p == ' ' || *p == 9) { p++; }
//qDebug("StrtrimLeft:p=%s",p);
if(p != szBuf) //ͷ<><CDB7><EFBFBD>пո<D0BF><D5B8><EFBFBD>TAB<41>ַ<EFBFBD>
{
szBak = _strdup(p); //strcpy()<29><><EFBFBD><EFBFBD>source<63><65>dest<73>غ<EFBFBD>(overlap)<29><><EFBFBD><EFBFBD>copy<70><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>û<EFBFBD>пո<D0BF><D5B8><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
strcpy(szBuf, szBak); //strcpy()<29>϶<EFBFBD><CFB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><70>szBuf<75><66>һ<EFBFBD><D2BB><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD>ͬʱstrcpy<70><EFBFBD><E1BFBD><EFBFBD><EFBFBD>β<EFBFBD><CEB2>null<6C><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˹<EFBFBD><CBB9>ض<EFBFBD>szBuf
free(szBak);
}
}
//ɾ<><C9BE><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2>ո<EFBFBD>, 2002.9.19<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD>TAB<EFBFBD>ַ<EFBFBD>(ASC<53><43>Ϊ9)<29><><EFBFBD><EFBFBD>
void StrTrimRight(char* szBuf)
{
char *szBak = NULL;
int iPos = strlen(szBuf)-1; //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>NULL<4C>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>±<EFBFBD>
if(!szBuf) return;
char *p = &szBuf[iPos];
while(*p == ' ' || *p == 9) { p--; }
if(p != &szBuf[iPos]) //β<><CEB2><EFBFBD>пո<D0BF>
{
p++;
*p = 0; //ֱ<><D6B1>β<EFBFBD><CEB2><EFBFBD>ضϣ<D8B6><CFA3><EFBFBD>ɾ<EFBFBD><C9BE>ͷ<EFBFBD><CDB7><EFBFBD>ո񻹼<D5B8><F1BBB9BC><EFBFBD>
}
}
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>пո<D0BF>
void StrTrimAll(char* szBuf)
{
StrTrimRight(szBuf);
StrTrimLeft(szBuf);
}
//<2F><>ȡָ<C8A1><D6B8><EFBFBD>ļ<EFBFBD><C4BC>ij<EFBFBD><C4B3><EFBFBD>
i_32 GetFileSize(char* lpszFileName)
{
FILE* pFile;
pFile = fopen(lpszFileName, "rb"); //<2F><><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD>ʽ
if(pFile == NULL) return -1;
fseek(pFile, 0, SEEK_END); //<2F><>λ<EFBFBD><CEBB><EFBFBD>ļ<EFBFBD>β<EFBFBD><CEB2>
i_32 lFileSize = ftell(pFile); //<2F><>ȡ<EFBFBD>ļ<EFBFBD>ָ<EFBFBD>뵱ǰλ<C7B0><CEBB>(<28><>ʱ<EFBFBD>ļ<EFBFBD>ָ<EFBFBD><D6B8>ָ<EFBFBD><D6B8>EOF<4F><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־)[<5B>ļ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>Ǵ<EFBFBD>0<EFBFBD><30>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]
fclose(pFile);
return lFileSize;
}