在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
默认string类型为ansiString;有编译开关控制 shortString:
strShort : shortString;
strShort 大小256字节,可根据sizeof()计算出,strShort[0]存储字符串长度,所以最大为255。
全局变量strShort 默认初始化为空字符串,长度length为0;
局部变量strShort 不初始化,长度无意义;所以局部变量strShort 尽量初始化空字符串使用。
另外strShort[1] := 'A';这样的赋值操作并不会改变strShort,Length的大小,strShort := 'A'这样的赋值语句才会改变strShort[0]的大小=1。
setlength方法能改变其现有字符长度,但不会改变所占字节大小,也不会改变长度外的内容。
ansiString:
strAnsi : ansiString;
strAnsi 类似一个动态字符数组(GBK,字符占1字节,中文占2字节),容量最大为2G,变量默认占一个指针的大小4字节(sizeof),可以用setlength方法设置字符容量,如:setlength(strAnsi,1024*1024)。
strAnsi 全局、局部变量都为空字符串,strAnsi[0] 不可访问,访问其元素strAnsi[i]时需要先对strAnsi 设置长度,或者直接赋值strAnsi :='123456';
setlength方法能改变其长度还有所占容量大小,舍弃的字节并不会初始化为#0。setlength(strAnsi,0)等于strAnsi :='';
widestring:
strWide : wideString;
strWide 与ansistring类似,但是所有字符都占2个字节(usc)。strWide[i]为widechar类型;sizeof大小为2字节,length为包含字符的个数(中英文占长度相同)。
array:
aryD : array of byte,动态数组aryD变量名是一个指针,指向第一个元素aryD[0]的地址,用setlength方法设置其长度,元素都是从下标0开始计数,最大长度为2G,对aryD做赋值操作只是改变他的指向。
和long string类型,都是采用引用计数的方法来管理内存,三种方法释放其内存,finalize(aryD)、setlength(aryD,0)、aryD :=nil;
aryS : array[0..10] of byte,静态数组aryS固定长度,不能用setlength改变长度;
全局变量会初始化为0,局部变量不初始化,@aryS为第一个元素的指针;
一维数组,形参类型为array of 作为参数传递时默认会当做值传递const,函数内部会复制一个副本,用Var保留字声明,参数会作为引用传递,类似指针,函数内部对其改变会影响到外部内容;
如果形参类型为自定义动态数组类型如:TDAry: array of byte;则传递时是指针传递,函数内改变会影响到函数外;
如果为自定义静态数组如:TSAry: array[1..10] of byte;则传递时是值传递,是一个备份,var可以传递引用;
多维数组参数传递时与一维类似;
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论