先来看看他的
string
的定义吧
.
Delphi7:
type
PStrRec = ^StrRec;
StrRec = packedrecord
refCnt: Longint;
length: Longint;
end;
Delphi 2010:
PStrRec = ^StrRec;
StrRec = packedrecord
codePage: Word;
elemSize: Word;
refCnt: Longint;
length: Longint;
end;
每个
string
的
StrRec
都是可以根据
string
内存地址
– sizeof(StrRec)
得到
.
细心的人已经可以看出来一些端倪了
.2010
增加了两个
Word
来保存编码和宽度
编译器会处理
声明的是
AnsiString
时候
elemSize=1 ,codePage= (
如果是繁体系统就是
big5
的页码
950
简体就是
936)
如果声明是
string (Unicode) elemSize=2 ,codePage= 1200 (0x04B0)
如果声明是
UTF8String
时候
elemSize=1 ,codePage= 65001