PASCAL:获取数组的长度[x]

时间:2015-05-19 19:46:20

标签: arrays indexing pascal freepascal

如何获得具有特定索引的数组的长度,例如,如果我有这样的数组

TYPE T_PERSON = PACKED RECORD
  Example : STRING[40];
  Example2 : STRING[10];
  Example3 : STRING[5];
END; 
example: ARRAY [1..30] OF T_PERSON 

我想分别知道example[28]的长度example[x]。 我可以使用LENGTH()获得它还是有其他解决方案?

3 个答案:

答案 0 :(得分:2)

如果它是一个数组而你想要元素的数量:

 high(example)-low(example)+1;

Afaik与Free Pascal和Delphi 4+的长度也可能有用,但不要把我钉在上面。

如果你需要以字节为单位的大小,Abelisto是正确的,sizeof()就是你想要的,它也适用于记录的某些部分(例如sizeof(example.example))。

如果由于对齐字节而未使用PACKED,则总和可能不会相加。

答案 1 :(得分:0)

'example'数组的每个单元格/元素都有SizeOf(T_PERSON)。这是字节数。

目前,SizeOf(T_PERSON)是58个字节。

我无法解释的是为什么它是58字节而不是55字节(正如我所期望的那样,非打包记录)或甚至56字节(对于4字节边界对齐的打包记录)。

也许其他人可以对此有所了解。

答案 2 :(得分:0)

是的,你也可以通过长度功能获得它。

function Length(A: DynArrayType):Integer;