Iva*_*nov 2 arrays delphi pascal
我的计划是创建一个函数来检索对象的最高元素,可以说是数组的上限.换句话说,我正在尝试获取函数High()的代码.
到目前为止我尝试了什么:
function High2(var X):integer;
begin
Result:=Pbyte(Cardinal(@X)-1)^-1;
end;
Run Code Online (Sandbox Code Playgroud)
上面的函数应该读取对象中第一个元素(数组/字符串)的位置之前的值(长度)并返回它减少1.但是它不能在静态或动态数组类型上检索正确的结果.
如何在Pascal中重新创建High()函数?
High()(和Low())函数被称为"标准函数",这意味着它们是编译器固有的.像Write和Writeln一样,它们并不像普通的Pascal函数声明那样存在.编译器确保它们在"系统"单元范围内仅仅是为了方便,并允许在其他范围内使用相同名称的函数.这也允许您通过使用System.High()显式引用系统单元版本来限定它们.由于它们是内在的,编译器将自动为正在考虑的类型生成正确的代码序列.这也意味着尝试复制它们的全部功能几乎是不可能的.只需坚持内在的标准功能.
| 归档时间: |
|
| 查看次数: |
311 次 |
| 最近记录: |