用textout输出的字符在中文系统下,某些符号会被显示为中文字符。如何实现在中文系统下实现和英文系统一样的原样输出?设置了canvas.font.charset := ANS_CHARSET可不起作用。
解决方案 »
- 我用delphi7.0ADO方式连接Oracle10g,在设置ADOQuery属性ActiveX为TRUE时报错
- 刚学DLL简单的问题路过的帮看看
- inttraweb稳定性问题--高分!!
- 引用DLL后,程序退出有报错,DLL会受传入的参数类型不同而影响!为什么
- 奇怪问题:为什么有时候两个相同数字比较时会出现不相等的状况。
- 一个很菜的问题,关于tquery的
- 请教,在delphi中调用word,当你关闭了word之后,word会提示你要不要保存修改了的文档,怎么判断用户是点了保存还是不保存?
- 所谓的数据库引擎是不是就是copy若干个dll文件,然后用regsvr32注册一下就等于安装数据库驱动了?
- 关于DLL中函数重载的问题(分不够可以再加)
- 请教一个ado连接的问题
- delhi程序化思维 在线等待?????????
- 在Delphi中的 DCB 定义为什么与 MSDN 里有这么大的不同
Canvas.Font.Charset := DEFAULT_CHARSET;
继续等高手。
定义成string试试
就是特殊字符按英文原样输出。Texout API似乎是自动根据系统语言进行不同的输出。
在中文系统下把特殊字符按中文输出了(乱码)
我只要求Texout不要自作聪明。
有没有Ansi_Textout之类的API?或着某个属性可以控制?
Texout的字符串是Pchar,跟string没有关系。
Canvas.charset理应起作用,可是它不起作用。
国外有资料说临时修改系统的语言区域属性,有这么麻烦吗?
就没有办法让textout别自以为是吗?
这样定义试试,自己没试过,不一定行
一般中文中夹的字符都是当做中文表示,如果想强制改,那要把字符区别出来重新组合字符串
建议用wideString或将内容编码成UTF8格式存放在string中,然后再输出的时候将其转换成WideString用TextOutW输出。
关键还是Texout这个API的处理方式问题。
用Texout一个一个字符地输出,可以做到,但速度比输出整个字符串要慢很多。
所以用特殊字符特殊对待或画图的方法在效率上是不允许的。regersubadm
的方法可能和我的需求是相反的吧。
你没看清问题吧。我这里也正常输出英文与中文的混合,要求是只输出英文,不输出中文,
一个中文字要输出为两个ANSI字符。