我要自杀了(100分)

  • 主题发起人 刘麻子
  • 开始时间
以下程序可以解决你的一些输入显示问题。<br>但是在判断一次输入字符的数量时(目的是取相同长度的字符作比较),还要作完善<br>procedure TForm1.RichEdit1Change(Sender: TObject);<br>var CurLen:integer;<br>begin<br>&nbsp; &nbsp;CurLen:=Length(RichEdit1.Text);<br>&nbsp; &nbsp;RichEdit1.SelStart:=CurLen-2;<br>&nbsp; &nbsp;RichEdit1.SelLength:=CurLen;<br>&nbsp; &nbsp;if Pos(RichEdit1.SelText,'对照字符')=0 then<br>&nbsp; &nbsp; &nbsp; &nbsp;RichEdit1.SelAttributes.Color:=clblue<br>&nbsp; &nbsp;else RichEdit1.SelAttributes.Color:=clRed;<br>&nbsp; &nbsp;RichEdit1.SelStart:=CurLen;<br>&nbsp; &nbsp;RichEdit1.SelLength:=0;<br>end;<br>
 
刘麻子你要自杀,<br>要不要人帮忙、
 
关于汉字内码,偶查了资料,不知是否对?<br><br>“1980年,我国根据有关规定,在ASCII码的基础上扩大编码字符的数量,以国家标准形式,为3755个<br>最常用的汉字和3008个较常用的汉字规定了代码...为了以尽可能小的代价,使面向西方国家设计的微机<br>和大量系统软件为我所用,在计算机内一般用内部码表示汉字,将国标代码两个字节空闲的最左位置成'1'<br>,以与ASCII码区分.........(称国标内码)几年前,以我国为主的,联合日本、韩国等国家和台湾<br>地区,对各自使用的字符集进行相互认同与合并后,确定了20902个中日韩的台湾地区使用的繁体汉字,以及<br>大量冷僻汉字),由国际标准化组织正式批准为ISO/IEC10646中的汉字字符集(称‘大字符集’、‘CJK’字符集)...<br>事实上,“全世界正在使用的各种文字”并不都经常使用,经常使用的只是其中一部分,数量不足65536,因此UCS<br>字符集的最前面一部分,即0号组的0号平面被规定为“基本多文中平面(BMP)”,其中又分为代号为A、I、O、R<br>的四个区,A取共有19968个位置,用于字母文字、音节文字、和包括控制符在内的各种符号....<br><br>BMP中的字符,其四个字节代码前2个字节都是0,在绝大多数场合,可以只用后2个字节作为其代码。这种代码<br>与另一工业编码标准Unicode相一致,能以2字节统一地表示世界上的主要文字,将得到越来越广泛的应用。<br><br>与此相适应,我国的标准化管理机构发布了与ISO/IEC 10646一致的国家标准GB13000,并提出了“扩充汉字内<br>规范码”(GBK),这种内码仍以两个字节表示,第一个字节从81H到FEH,第二个字节从40H到FFH,虽然第二个<br>字节的最左位不一定为‘1’,但因为汉字内码总是2字节形式出现的,所以即使与ASCII码混合在一起,计算机也能加以正确识别。<br>Microsoft公司在我国大陆销售的Windows95中文版、Windows98中文版,已经使用了GBK内码,能统一的表示20902个汉字....且GBK兼容GB,过去大量用GB内码表示的汉字文本,在win95<br>、win98下仍能正常使用....”(以上摘自《计算机应用教程 中级(第二版)》,由<br>上海计算机应用能力考核办公室 编,上海教育出版社)<br><br>好,如果您耐心看完了上面这段文字,那你会知道:现在的汉字应该多数用GBK内码表示,占用两个字节第一个字节的最高位是1。判断是汉字还是英文字母的问题就初步解决了。但我还想问:2000、XP用的什么字符集?如果不是GBK,为什么我们输入的汉字仍然只有两个字符呢??听到请回答(长江长江....我是黄河、我是黄河..^_^)..期待ing........<br>
 
^ &nbsp; ^ &nbsp; ^ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;^<br><br>我也不知道啊———————
 
呵呵,先看看再说
 
为什么我输入汉字就可以?
 
第一个问题的解决方法可以是放一个timer, interval;=1; enabled;=false;<br>在ontimer事件中<br>begin<br>&nbsp; &nbsp;richedit1.SelStart:=0;<br>&nbsp; &nbsp;richedit1.SelLength:=2;<br>&nbsp; &nbsp;richedit1.SelAttributes.color:=clblue;<br>&nbsp; &nbsp;timer1.Enabled:=false;<br>end;<br>在richedit1的onchange事件中 <br>begin<br>&nbsp; &nbsp;timer1.Enabled:=true;<br>end;<br>
 
另外用线程的方法也可以实现,还是用timer比较好
 
不好意思!我救不了你,我是做数据库方面的(delphi+oracle)。
 
不好意思,我也是做数据库方面的,帮不到你了,:(
 
可能是开发环境问题,我试验了好几次都没有你说的问题
 
楼主,不好意思,我也不会:(
 
[h2]该到我出手了[/h2]<br>先给分,还有什么疑难杂症,尽管问<br>FengSirui@sina.com<br>procedure TForm1.RichEdit1Change(Sender: TObject);<br>begin<br>&nbsp; richedit1.SelStart:=0;<br>&nbsp; richedit1.SelLength:=2;<br>&nbsp; application.ProcessMessages;<br>&nbsp; RichEdit1.SelAttributes.Color:=clRed;<br>&nbsp; richedit1.SelLength:=0;<br>end;<br>
 
为你这100分,我想了好久的!<br>
 
就是中文输入法把 一些消息,包括 EM_SETCHARFORMAT 过滤掉,所以<br>先用<br>application.ProcessMessages; <br>抢先执行!
 
第一个问题确实和软件所处环境有关,<br>同样的程序(panxiaosen给我的)<br>在我机子上windows2000 server就不正常!?<br>而同样在我的机子上,windows 98又可以!?<br><br>而我自己在2000下编译出的目标程序,2000下<br>不正常,可在98也可以用的!为什么?<br><br>现在看来,以前有朋友和我讲'这个问题不存在'<br>,可能他的系统环境所致.我们都没有去深想,都<br>以为自己所见的就是对的.<br><br>那这个程序就不能在2000 server上运行了?<br>还有没有朋友用xp的,帮我测试一下?
 
慚愧﹐初學的什么都不會﹐但生命是美好的﹐不要那樣
 
richedit1.SelStart :=0;<br>&nbsp;richedit1.SelLength:=length(richedit1.Text);<br>&nbsp;richedit1.SelAttributes.Style:=[fsStrikeOut];<br>&nbsp;richedit1.SelAttributes.Color :=clred;<br>&nbsp;richedit1.SelAttributes.Size :=20;<br>这样可以!
 
[red]我用xuxiaohan的方法果然可以了,本来今晚之前就可以把这个程序作好了带给大家<br>因为白天有事,晚上也没空,只好等明天了,谢谢大家的帮助。<br>想要代码的朋友请联系我,另附详细程序设计文档,很容易看懂的。<br>可以加我qq,直接传给你。或者我放在某处,你们自己去下载。ok?[/red]
 
顶部