|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2017/3/24 11:07:36 |
标题: |
String 转变为 PAnsiChar 的问题 |
浏览:991 |
|
加入我的收藏 |
楼主: |
PAnsiChar(AnsiString(strValue));
一直这么用,没有发现问题。
但最近发现这个代码有问题。
如果: 1、strValue 包含中文字符;譬如 "D:\中国足球\abc" 2、程序在英文系统中编译、运行;
这样: AnsiString(strValue),就会变成 "D:\????\abc",这步就出错了。
不知道如何解决,希望高手指点迷津。
开发环境 WIN10 X64 ENGLISH、开发工具:RS10.1
----------------------------------------------
武汉天气不好 |
作者: |
|
2017/3/24 11:10:56 |
1楼: |
因为你在英文系统下运行。这就是原因。
另外,其实英文系统,显示 问号,只是因为他显示不了而已。
强行使用,也没啥问题。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2017/3/24 11:11:20 |
2楼: |
所以,为了解决问题。 应该使用 WideString WideChar PWideChar 丢掉 Ansi。 或者,不要用不支持中文的系统。
这里说的不支持 是指 Ansi 不支持。
其实 WIN 系统是可以支持的。
在控制面板,语言 区域 管理 非 unicode 程序的语言。 里头设置。
但是,你设置了,可能导致别的程序发生错误。
而且,你不可能每一个客户都设置这个。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2017/3/24 11:22:42 |
3楼: |
PAnsiChar不是我想用的,是 dll 里面的函数参数规定的,没办法。
WIN10 是支持UNICODE的,RS10.1 也是支持UNICODE的, 所以应该不会出现显示不了的问题吧?
----------------------------------------------
武汉天气不好
|
作者: |
|
2017/3/24 11:28:23 |
4楼: |
叫 DLL 作者去改。
你 开发环境支持 uniocde 但是你偏要用 ansi 。所以,不能怪 系统,也不能怪 开发环境。 只能 怪你或 DLL 作者。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2017/3/24 11:39:08 |
5楼: |
调试进 system.pas 中,发现是字符集的问题。设置一下字符集就OK了。
----------------------------------------------
武汉天气不好
|
|