GetPrivateProfileString的问题!

lq100 2004-10-22 08:51:56
GetPrivateProfileString("Option","Key","123456",b.GetBuffer(0),6,strDir);
GetPrivateProfileString("Option","ClientIP","192.168.0.1",c.GetBuffer(0),15,strDir);
GetPrivateProfileString("Option","ServerIP","192.168.0.2",m_remoteIpAddr.GetBuffer(0),15,strDir);

GetPrivateProfileString执行正常,第一条语句执行结束b=123456,c=123456,a=123456。
第二条语句执行结束后b=192.168.0.1,c=192.168.0.1,a= 192.168.0.1。
第三条语句执行结束后b=192.168.0.2,c=192.168.0.2,a= 192.168.0.2。
我想的应该三条语句执行完应该b=123456,c=192.168.0.1 a= 192.168.0.2。
可是为什么会这样?
还请高手指点,谢谢了!
...全文
297 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsvine 2004-11-23
  • 打赏
  • 举报
回复
goodsmaker(help someone)
说的不对??

你把buffer大小指定一下试试,如:b.GetBuffer(100)。
lsvine 2004-11-23
  • 打赏
  • 举报
回复
用GetPrivateProfileString("Option","IcpShareKey","123456",b.GetBuffer(0),6,strDir);不行
a.ReleaseBuffer();//

注意:.....b.GetBuffer(0)......,
a.ReleaseBuffer();//不是一个东西呀

这样试试:GetPrivateProfileString("Option","IcpShareKey","123456",b.GetBuffer(10),6,strDir);
b.ReleaseBuffer();
lq100 2004-10-25
  • 打赏
  • 举报
回复
用strcpy(a.GetBuffer(0), "Test");可以
用GetPrivateProfileString("Option","IcpShareKey","123456",b.GetBuffer(0),6,strDir);不行
a.ReleaseBuffer();//
goodsmaker 2004-10-23
  • 打赏
  • 举报
回复
象这样用
CString a;
strcpy(a.GetBuffer(0), "Test");
a.ReleaseBuffer();//用缺省参数,自动判断长度
lq100 2004-10-22
  • 打赏
  • 举报
回复
CString a;
CString b;
CString c;
char strDir[100];
GetFilePath(strDir,"test.ini");
GetPrivateProfileString("Option","IcpShareKey","123456",b.GetBuffer(0),6,strDir);
GetPrivateProfileString("Option","ClientIP","218.61.146.161",c.GetBuffer(0),15,strDir);
GetPrivateProfileString("Option","ServerIP","218.60.136.26",a.GetBuffer(0),15,strDir);
xjkiller 2004-10-22
  • 打赏
  • 举报
回复
你a,b,c是怎么定义的?把代码贴出来看看
lq100 2004-10-22
  • 打赏
  • 举报
回复
a,b,c都是CString的
.ini文件就像这样
[Option]
key=123456
ClientIP=192.168.0.1
ServerIP=192.168.0.2
用那三条语句读者三条
分别给a,b,c赋值
可是GetPrivateProfileString每执行一次a,b,c同时刷新
最后得到b=192.168.0.2,c=192.168.0.2,a= 192.168.0.2
而不是应该得到b=123456,c=192.168.0.1,a=192.168.0.2
DerryZhang 2004-10-22
  • 打赏
  • 举报
回复
??
goodsmaker 2004-10-22
  • 打赏
  • 举报
回复
在执行.GetBuffer后要用.ReleaseBuffer
见MSDN

If you use the pointer returned by GetBuffer to change the string contents, you must call ReleaseBuffer before using any other CString member functions.

The address returned by GetBuffer may not be valid after the call to ReleaseBuffer since additional CString operations may cause the CString buffer to be reallocated. The buffer will not be reallocated if you do not change the length of the CString.

Zhymax 2004-10-22
  • 打赏
  • 举报
回复
a,b,c怎么定义的?
beijingshizi 2004-10-22
  • 打赏
  • 举报
回复
??? 没看懂。。。

b,c,都是啥东西?

各自取各自的,不好吗?
lq100 2004-10-22
  • 打赏
  • 举报
回复
就是在GetPrivateProfileString("Option","IcpShareKey","123456",b.GetBuffer(0),6,strDir);
之后a.ReleaseBuffer(0);么?
可是这样的结果是a,b,c全部变成空的了!
goodsmaker 2004-10-22
  • 打赏
  • 举报
回复
你好象没有看我的帖
lq100 2004-10-22
  • 打赏
  • 举报
回复
这样有问题么?

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧