delphi 升级到xe7后的一些个人经验(一)...慢慢更新中
来源:互联网 发布:三星s5230c软件 编辑:程序博客网 时间:2024/05/21 17:39
一: 关于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后的一些个人经验(一)...慢慢更新中
- AS3中一些比较特别的用法(用到后慢慢更新)
- 用过的一些Api,慢慢更新(一)
- Delphi XE7中开发安卓程序一些有用的帮助资源
- Delphi XE7中开发安卓程序一些有用的帮助资源
- 一些编程好习惯,慢慢更新中
- Delphi XE7中使用JSON
- Rails 2 升级到 Rails 3 的一些经验
- Delphi XE7,Rad Studio XE7 更新Update1 下载(附Delphi XE7破解)
- 一些基本的概念(慢慢更新)
- Delphi XE7中蓝牙 Bluetooth例子的使用
- Delphi XE7的蓝牙 Bluetooth
- Delphi XE7的蓝牙 Bluetooth
- 一些工作中遇到的小问题,以及一些小技巧积累,慢慢更新
- delphi xe7 fmx 复制到剪切板
- 在Delphi中使用IDispatch访问MSHTML的一些经验
- Android ADT升级到17.0版本后的一些问题
- Delphi XE7 android 实现的在线更新APP的一个程序
- Linux rpm 命令参数使用详解:RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”
- Best Time to Buy and Sell Stock ---- LeetCode
- Mac 环境变量
- Linux-命令-工作总结-对自己有用
- Linux I2C子系统分析之(一) ----- 用GPIO模拟I2C总线
- delphi 升级到xe7后的一些个人经验(一)...慢慢更新中
- 编写C语言跨平台函数(以清屏和休眠函数为例)
- ubunut手动安装任何版本的firefox
- 通过api获取句柄控制其他窗体(转)
- JNI编程(二) —— 让C++和Java相互调用(2)
- powerDesigner利用数据库反向生成模型
- SQLite
- exp\imp 导入导出命令使用
- linux命令行下载jdk