高手指点memo中sellength有时汉字长度为1,有时为2,在那里进行设置?
我也不知道怎么设置的,我2个不同的程序,在memo控件中录入一个汉字,然后拖动鼠标选中,然后加一个按钮,showmessage(inttostr(memo1.selLength)),一个提示为1,一个提示为2,我也不知道在那里设置的问题,请高手指点 问题点数:100、回复次数:8Top
1 楼windindance(风舞轻扬·白首为功名)回复于 2006-03-04 15:13:37 得分 30
从未遇见类似问题。一个汉字的sellength应该都是2Top
2 楼derris(深水鱼)回复于 2006-03-04 17:03:53 得分 0
我估计应该是我增加了语言文件而导致的。而且都是ansistring的字符,真是奇怪Top
3 楼keiy()回复于 2006-03-04 17:30:12 得分 30
会不会与系统的区域设置有关(你选中了半个汉字?)Top
4 楼derris(深水鱼)回复于 2006-03-05 11:22:00 得分 0
我在一个计算机上面,而且也没有注销换用户什么的,打开这个程序(这个程序用了ADO连ACCESS数据库),在MEMO中SHOW了SELLENGTH汉字是1,然后新建一个或者打开别的程序,在MEMO中SHOWMESSAGE汉字就是2。我真晕了。我猜是不是有个地方设置MEMO中使用的STRING或者是WIDESTRING?我更换了PROJECT的选项里面的语言也没有用。Top
5 楼net_morning(矿泉水)回复于 2006-03-05 19:27:13 得分 30
用widestring变量showMessage一下看看Top
6 楼derris(深水鱼)回复于 2006-03-05 19:57:27 得分 0
找了好久也没有解决,我到底也不知道原来的程序是怎么做成的。widestring汉字当然是1,length函数是会自动根据string,或者widestring提供正确长度的。
=======================摘抄===============
1.字符集(CharSet)
要支持国际化,最好的方案是支持Unicode;非Unicode也可以支持国际化,但是有小许的缺失。 ..................
XP中引入了theme(style),也就是新的ComCtrls,一旦程序支持了theme,就要小心一些向系统获取的信息,如TCustomEdit.SelLength,TCustomEdit.SelStart等等,这些信息的返回值与不支持theme时的返回值将会有差别[因为支持theme的window是comctrls6版本的组件,内部是使用Unicode方式工作的]。
原文:http://blog.cnpack.org/index.php?play=show&id=10
=============================
唉,但具体到底是怎么回事呢?关键是会不会有的系统是1有的系统是2就完蛋了。Top
7 楼windindance(风舞轻扬·白首为功名)回复于 2006-03-06 09:22:08 得分 10
你有那个显示为1的程序的源代码吗?
会不会是他 显示选择长度时做了特殊处理?Top
8 楼derris(深水鱼)回复于 2006-03-06 13:05:30 得分 0
知道了。当时看到这里的时候:
XP中引入了theme(style),也就是新的ComCtrls,一旦程序支持了theme,就要小心一些向系统获取的信息,如TCustomEdit.SelLength,TCustomEdit.SelStart等等,这些信息的返回值与不支持theme时的返回值将会有差别[因为支持theme的window是comctrls6版本的组件,内部是使用Unicode方式工作的]。
我就开始有点感觉是xp的manifest的问题。今天中午抽空试验了一下,果然是。谢谢大家捧场。Top




