已安装了阿拉伯语输入法,在控制面板--区域和语言选项中也选中了相关的选项,并且将Label1.Font.Charset :=ARABIC_CHARSET;,但为什么在Label1.Caption等中“输入阿拉伯语还是显示为??? ”,请高手指教,在Delphi7中怎么使得界面设计时在Label1.Caption或其他控件中能输入阿拉伯语,并显示为阿拉伯语?

解决方案 »

  1.   

    1 delphi7的单元文件不支持unicode字符
    2 控件不支持unicode,需要找支持unicode的tnt控件
      

  2.   

    不是字库的问题,系统能显示你程序就能显示delphi 的Label1.Caption是ansistring,
    程序开发过程中在project-options-version info 中的language ,如果ID设置成804,也就是中文,这样delphi内部处理时,因为dfm里保存使用widechar,显示前会把widechar转成ansi,这里会会使用804对应的935codepage来转换,而你要正常使用,得在程序的intialization段里加上,intialization
      windows.SetThreadLocale(windows.GetSystemDefaultLCID);
      

  3.   

    但是这种方法并不通用,
    最好的方式是使用tnt控件,但tnt控件不是很好,因为不全,很多时候需要添加ansi控件,
    那样处理起来存在一些BUG,不能在运行时改变语言。比较通用的方法当然是所有API和控件都是用unicode的也就是函数名后面带一个W的API。不过也有另一种方法,
    首先程序所有字符串先保存为unicode到一个txt文件或ini文件里,
    在程序中先根据语言调用SetThreadLocale,
    之后将读取的unicode字符串,直接使用WideCharToMultiByte转成系统LCID所对应的codepage来显示。
    就不会有问题了。但这种方法无法在界面上同时显示多种语言,可以保证不出现问号或者乱码。。
    据说D2010都支持unicode,可以去试试。
      

  4.   

    intialization段这个是在哪里?找不到,请指教
      

  5.   

    intialization段这个是在哪里?找不到,请指教
    最后一行,自己写。
      

  6.   

    delphi7在阿拉伯操作系统能用吗?
      

  7.   


    在你所有代码下边即end.之前自己写上就可以了看下PAS单元文件的格式
      

  8.   

    在WORD中可以显示阿拉伯语了,包括以阿拉伯文命名的文件夹,都能显示阿拉伯语,这表示系统能显示阿拉伯语了吗?操作系统是中文版的,按照以下进行了设置:
    程序开发过程中在project-options-version info 中的language ,如果ID设置成804,也就是中文,这样delphi内部处理时,因为dfm里保存使用widechar,显示前会把widechar转成ansi,这里会会使用804对应的935codepage来转换,而你要正常使用,得在程序的intialization段里加上,intialization
      windows.SetThreadLocale(windows.GetSystemDefaultLCID);
    可是还是显示为?,是不是我不能从WORD中复制阿拉伯文到DELPHI,可是我转为阿拉伯语输入法,也不能输入
      

  9.   

    汗、、、没看清楚问题。。
    以为你是想让你的程序在阿拉伯语言下显示阿拉伯语言、你如果想要在设计时可以输入显示阿拉伯语言、2个方法、
    1、安装阿拉伯语言包,再设置系统语言为阿拉伯语言,重启后就可以了。
    2、采用unicode控件,比较著名的就是tnt控件delphi开发工具本身在dfm中存的是unicode,而显示的编辑器、标准控件的form、label都是ansi,中文下显示时都是采用简体中文的codepage转换后再显示的,而阿拉伯文字的unicode编码无法在936codepage中找到对应的字符,所以肯定会乱码的,
    这些并不是delphi程序本身控制的,是由系统自动转换的。
    而如果你使用tntform,因为是unicode控件,系统显示时采用的codepage是unicode去转换显示,就都能正常显示。
      

  10.   

    接下来可以只好试试D2010啦,但我用D7开始的程序,在D2010中能正常打开吗?
      

  11.   

    阿拉伯语言包,你有吗?请传一份给我,邮箱:[email protected]
      

  12.   

    delphi  7  安装 TNT 控件
    delphi 2010 string 默认是 unicode 了 可以显示 
      

  13.   

    需要改变工程文件的dof文件,这个文件里面会存放一些语言设置和相关路径,理论上如果你的工程路径中存在中文的话、delphi调用系统的API是无法识别到真正路径的,需要把刚才相关路径修改一下。
    还有
    里面的
    Locale=2052
    CodePage=936
    可能需要手动改成阿拉伯语言下的配置,具体值你可以新建另一个刚才再参照一下就可以了