首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VC >

程序运行结果不正确。是不是CString导致的呢?请帮小弟我分析以下。多谢关注

2012-03-09 
程序运行结果不正确。是不是CString导致的呢?请帮我分析以下。谢谢关注。我先描述一下需求,我希望要实现一个

程序运行结果不正确。是不是CString导致的呢?请帮我分析以下。谢谢关注。
我先描述一下需求,我希望要实现一个这样功能,在一个类似AddPoint这样的功能中,一个界面,显示点信息,包括点名、坐标和点的属性。根据不同行业、客户,属性需要可以自己定义。所以属性我就存放在文件里了。属性包括两部分,显示的文本和属性编码。
1.
我实现的方法。就是定义了一个类,类如下:
//电力上的跨越物属性
class   CPowerSpanProperty
{
public:
CString   m_strGroundExplain;//地物属性介绍,用于在界面显示使用,例如:220V电力线
CString   m_strGroundCode;//地物属性编码,例如:220KV用于数据导出格式时拼接使用
CPowerRule*   m_Parent;//属于哪个大类,提高遍历效率用
};
我在一个类里,用一个CArray来保存
CArray <CPowerSpanProperty,CPowerSpanProperty&>   m_subItems;

2.我通过读写文件,来填充我的对象。填充过程我认为是没有问题的,我调试过。

填充的代码我写在一个地方了。可以调用。调用的时候是正常的,但是运行一段时间后。我读的正确的数据就出错了。

对于这个问题,我尝试过是不是我读入的时机不对,因为我这个CArray的对象是放在Document里的。那么就要我的Document构造好之后。我在CWinApp的InitInstance的最后来读文件。写入Document的CArray <大类型,大类型&> 里,到实际使用的某个界面的时候。原先填充的正确数据全部都变了。原来比如是220V电力线,但是实际显示的肯能是随机字符,也可能是空白了。这个很奇怪。我不知道是不是因为之后的什么地方还可能改变我的内存,于是,我换了个地方,在View的OnInitialized的方法里去读文件。

这个时候,在模拟器上是没有问题了。放到实际的pda中。又出现问题了。现在我是没什么好方法了。


我考虑的,可能有两种。
1.是不是CString作为成员变量会有问题?
2.我看别人用的都是CArray <类型*,类型*> 这个方式,或者用CTypedPtrArray <类型*,类型*> 这样的。

那么CArray和CTypedPtrArray有什么不同呢?

我看以前别人作的时候没有使用CString作成员变量过。是不是用TCHAR数组会好一些??

希望您给个大概思路。我好尝试。或者解答以下我的问题。谢谢关注。

[解决办法]
顶~
[解决办法]
ding
[解决办法]
漂流。。。。
我顶~~
[解决办法]
友情uP!
[解决办法]
有自己实现Serialize函数吗?
参见MSDN:Serialization in MFC。
[解决办法]
你的类要从CObject或者CObject的子类派生,要声明DECLARE_SERIAL宏,要实现Serialize函数等等。

另外,容器类也需要你实现对应的Serialize函数的。
[解决办法]
谢谢楼主,接分来了
[解决办法]
继续混分...
[解决办法]
来鸟
[解决办法]
我顶~~

[解决办法]
继续混分...

[解决办法]
继续混分...

[解决办法]
禁止刷屏
[解决办法]
继续混分...

[解决办法]
不刷了, 我混下分

热点排行