我在Turbo Pascal 6中搜索了";rset";以及";lset"-QB 4.5的语句在其变量字节内对字符串进行对正,这在Turbo Pascal中是等价的,但没有发现任何结果,就好像Turbo Pascal不需要这些语句,或者Turbo Pascal总是向左对字符串。这是真的吗?
在Turbo Pascal 6.0中,string
类型保留256字节的内存。
s: string;
内存布局是第一个字节(值0..255(表示字符串的长度。以下字节包含字符,始终左对齐。
前面的一个变体是,您可以声明具有最大长度的字符串变量,如f.ex.
s: string[10];
此示例将保留11个字节的内存。同样,第一个字节表示实际字符串的长度(在这种情况下为0..10(
类似的语句后的内存内容
s := 'test';
将是
4, 't', 'e', 's', 't', #0, #0, #0, #0, #0, #0
没有修改字符分配以右对齐字符数据的语句(如QBasic中的RSET(。
然而,理论上,你可以在字符串前面加一系列空字符,例如s :=#0#0#0#0#0#0+'test';
,以达到类似的效果,但长度将成为字符串变量的长度。
10, #0, #0, #0, #0, #0, #0, 't', 'e', 's', 't'
在这种情况下,空字符是字符串的一部分,这可能会有问题。字符串的末尾可能使用null字符。此外,由于在某些情况下打印过程可能会省略空字符,而在其他情况下则不会。这可能会导致打印输出或其他方面的数据错位。