关于字符串 ( 积分: 10 )

  • 主题发起人 主题发起人 ykjt
  • 开始时间 开始时间
Y

ykjt

Unregistered / Unconfirmed
GUEST, unregistred user!
string缺省是ansistring,为何string[257]会发生越界错误?
如何改变string的缺省类型?比如缺省是shortstring或widestring?
 
string缺省是ansistring,为何string[257]会发生越界错误?
如何改变string的缺省类型?比如缺省是shortstring或widestring?
 
问题没有说清楚呀
你定义s:String[257] ;这样是不可以的,不能超过256
 
string缺省是ansistring,而ansistring可以有2^31长?
 
但定义这样的类型string[n] 就是shortstring类型了
 
如何改变string的缺省类型?比如缺省是shortstring或widestring?
 
缺省情况下,如果用如下的代码来定义字符串,编译器认为是AnsiString字符串:
var
S:string;//编译器认为S的类型是AnsiString
当然,能用编译开关$H来将string类型定义为ShortString,当$H编译开关的值为负时,string变量
是ShortString类型;当$H编译开关的值为正时(缺省情况),字符串变量是AnsiString类型。下面的代码
演示了这种情况:
var
{$H-}
S1:string;//S1是ShortString类型
{$H+}
S2:string;//S2是AnsiString类型
使用$H规则的一个例外是,如果在定义时特地指定了长度(最大在255个字符内),那么总是ShortString:
var
S:string[63];//63个字符的ShortString字符串
AnsiString(或长字符串)类型是在Delphi2.0开始引入的,因为Delphi1.0的用户特别需要一个容易使用而且没有255个字符限制的字符串类型,而AnsiString正好能满足这些要求。
虽然AnsiString在外表上跟以前的字符串类型几乎相同,但它是动态分配的并有自动回收功能,正是因为这个功能AnsiString有时被称为生存期自管理类型。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
I
回复
0
查看
606
import
I
后退
顶部