DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: laidabin
今日帖子: 1
在线用户: 5
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 dbyoung (dbyoung) ★☆☆☆☆ -
普通会员
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
----------------------------------------------
武汉天气不好
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/3/24 11:10:56
1楼: 因为你在英文系统下运行。这就是原因。

另外,其实英文系统,显示 问号,只是因为他显示不了而已。

强行使用,也没啥问题。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/3/24 11:11:20
2楼: 所以,为了解决问题。
应该使用 WideString WideChar PWideChar
丢掉 Ansi。
或者,不要用不支持中文的系统。

这里说的不支持 是指 Ansi 不支持。

其实 WIN 系统是可以支持的。

在控制面板,语言 区域 管理
非 unicode 程序的语言。
里头设置。

但是,你设置了,可能导致别的程序发生错误。

而且,你不可能每一个客户都设置这个。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 dbyoung (dbyoung) ★☆☆☆☆ -
普通会员
2017/3/24 11:22:42
3楼: PAnsiChar不是我想用的,是 dll 里面的函数参数规定的,没办法。

WIN10 是支持UNICODE的,RS10.1 也是支持UNICODE的,
所以应该不会出现显示不了的问题吧?
----------------------------------------------
武汉天气不好
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/3/24 11:28:23
4楼: 叫 DLL 作者去改。

你 开发环境支持 uniocde 但是你偏要用 ansi 。所以,不能怪 系统,也不能怪 开发环境。 只能 怪你或 DLL 作者。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 dbyoung (dbyoung) ★☆☆☆☆ -
普通会员
2017/3/24 11:39:08
5楼: 调试进 system.pas 中,发现是字符集的问题。设置一下字符集就OK了。
----------------------------------------------
武汉天气不好
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行66.40625毫秒 RSS