http://blog.csdn.net/span12/article/details/42522091

你只要记住 字符串使用变了。
VCL 下面所有的 char 改 ansichar

string 改 ansistring。

array of char改为

array of ansichar

wide 版本的不用变。
移动开发下,请使用 tencdong 和 tbytes 处理所有字符串问题。

delphi 升级到xe7后的一些个人经验(一)...慢慢更新中
原创 2015年01月08日 11:16:43 标签:delphi 629
一: 关于string;

xe7中string默认的是unicodestring,所以计算一些中英文的字符串长度会出现不同,

unicodestring中每个字符已2个字节存储,长度为2,即使是英文也会填充空格弥补.

ansistring中汉子长度为2,英文为1.

比如如下代码:

var

s: string;
i: integer;
begin
s:= edit1.Text;
//s:= '啊是的1a';{啊和是中间有空格}
label1.Caption:= s +'(sizeof)' + ':' + inttostr(sizeof(s));{4}
label2.Caption:= s +'(length)' + ':' + inttostr(length(s));{8}

end;

但如果现在是想得到他们长度为9怎么办?可以使用如下方法;

1: 引用AnsiStrings单元.

a: 引用AnsiStrings单元, 如果不引用该单元,即便编译不报错,实际上是用的还是Unicode版本的函数,会有隐式的转化。不信打开参数自动完成,看看IDE提示的类型是什么?天啊AnsiLowerCase参数竟然还是String,而不是AnsiString。看来Delphi2010太迫切的要抛弃Ansi字符串了,以至于你不引用AnsiStrings单元,所有Ansixxxx函数实际上还是Unicode版本。

b: 把s改为ansistring;

2:自己写了一个函数

function GetLen(str:string): integer;
var
i,k: integer;
begin
k:= 0;
for i := 1 to length(str) do
begin
if (ord(str[i])>128) then
begin
k := k+2;
end else
k:= k+1;
end;
result := k;
end;

二 Timage控件,现在已经支持GIF和PNG了,但JPEG还是需要引用JPEG单元.

delphi 升级到xe7后的一些个人经验的更多相关文章

  1. 升级为iOS9后,默认请求类型为https,如何使用http进行请求会报错(引用他人的)

    升级为iOS9后,默认请求类型为https,如何使用http进行请求会报错 The resource could not be loaded because the App Transport Sec ...

  2. Atitit.提升 升级类库框架后的api代码兼容性设计指南

    Atitit.提升 升级类库框架后的api代码兼容性设计指南 1. 增加api直接增加,版本号在注释上面增加1 2. 废弃api,使用主见@dep1 3. 修改api,1 4. 修改依赖import, ...

  3. 升级win8.1后mysql服务不能启动的问题

    升级win8.1后发现服务列表中MySQL55不见了. 1. 先把服务恢复. mysql没有看到maitenance,找到安装文件 mysql-installer-community-5.6.12.0 ...

  4. Mac升级到Yosemite后默认的php版本不支持imagetfftext函数问题解决

    Mac升级到yosemite后,php也自动升级,运行项目的时候发现后台验证码显示不出来.调试一下发现imagetfftext这个函数不存在,应该gd没有安装完全,因为Mac上的php实现系统自带的, ...

  5. 升级了win10后开启wifi热点出现iphone&macbook连接断线的问题(win7也一样)

    升级了win10后开启wifi热点出现iphone&macbook连接 不间断 断线的问题 文后附上开启虚拟wifi的办法 百度参考了别人也出现这种问题,解决办法是修改信道,默认信道是11,修 ...

  6. xcode7.3 升级 xcode8.0 后权限设置问题(升级xcode 8.0 后构建版本不显示问题)

    xcode7.3 升级 xcode8.0 后权限设置问题(升级xcode 8.0 后构建版本不显示问题) 前两天为了适配 iOS10 的系统 我将xcode 7.3 升级到了 xcode 8.0 但是 ...

  7. 电脑升级完Xcode8后 注释快捷键无效的问题

    1.部分电脑升级完Xcode8 后直接重启电脑就可以使用Command +/ 快捷键注释代码, 2.如果上述方法没有效果,可以在终端输入sudo /usr/libexec/xpccachectl  然 ...

  8. 升级10.11后使用CocoaPod出现-bash: pod: command not found 解决办法-备

    升级10.11后,运行pod命令出现: -bash: pod: command not found 解决办法: sudo gem install -n /usr/local/bin cocoapods ...

  9. 升级iOS8系统后,保险箱Pro、私人保险箱、私密相冊打开就闪退的官方解决方式

    升级iOS8系统后,保险箱Pro.私人保险箱.私密相冊打开就闪退的官方解决方式   写在前面的话: 1.   本文适用条件    适用于:您的保险箱Pro.私人保险箱.私密相冊在iPhone或iPad ...

随机推荐

  1. php71 gdnz

    更新yum库:yum updat yum install epel-release yum install -y gcc gcc-c++ autoconf libjpeg libjpeg-devel ...

  2. Tomb Raider(暴力模拟)

    Tomb Raider https://hihocoder.com/problemset/problem/1829?sid=1394836 时间限制:1000ms 单点时限:1000ms 内存限制:2 ...

  3. Java Tomcat下载、安装和环境变量配置

    win10下Tomcat的下载.安装和环境变量的配置 -----made by siwuxie095                             1.首先到Tomcat官网,传送阵:点击开 ...

  4. 【Python基础教程第2版】——第二讲:列表和元组

    引言: 什么是数据结构? 数据结果是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合.Python中最常用的数据结构是序列. Python包含6种内建的序列:列表和元组(最常用:列表可以修 ...

  5. SQL SERVER 和ACCESS、EXCEL的数据导入导出

    SQL SERVER 与ACCESS.EXCEL之间的数据转换SQL SERVER 和ACCESS的数据导入导出[日期:2007-05-06]     来源:Linux公社  作者:Linux 熟 悉 ...

  6. jQuery之双下拉框

    双下拉框要实现的效果,实际上就是左边下拉选择框里的内容,可以添加到右边,而右边同理.写了个简单的例子,来说明一下. 代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  7. apache中开启rewrite

    1.在apache配置文件httpd.conf中找到如下行: #LoadModule rewrite_module modules/mod_rewrite.so 去掉该行前面的#号 2.在httpd. ...

  8. Spring框架整合WEB解决配置文件加载多次的问题

    1. 创建JavaWEB项目,引入Spring的开发包.编写具体的类和方法. * 环境搭建好后,启动服务器来测试项目,发送每访问一次都会加载一次配置文件,这样效率会非常非常慢!! 2. 解决上面的问题 ...

  9. Template msg

    http://blog.csdn.net/xiejiawanwei2_bb/article/details/40680493 {{first.DATA}} 日期:{{Day.DATA}} 报警类型:{ ...

  10. tomcat内存溢出问题解决思路

    .修改启动时内存参数.并指定JVM时区 (在windows server 下时间少了8个小时) 在Tomcat上运行j2ee项目代码时,经常会出现内存溢出的情况,解决办法是在系统参数中增加系统参数: ...