|
|
|
|
/*-----------------------------------------------------------------------------------
|
|
|
|
|
ƽ̨<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>
|
|
|
|
|
//#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>
|
|
|
|
|
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>
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
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>
|
|
|
|
|
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>
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
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>
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|