gpt4 book ai didi

arrays - 是否可以从引用中获取(静态/动态)数组的长度?

转载 作者:行者123 更新时间:2023-12-03 15:39:09 27 4
gpt4 key购买 nike

我想将数组的引用传递给需要数组长度的函数。我想知道我是否也必须传递它的长度,或者我可以从数组引用中检索它。

uses
Vcl.Dialogs, System.SysUtils, System.Types;

type
IntegerArray = array[0..$effffff] of Integer; // defined in System
PIntegerArray = ^IntegerArray; // defined in System

procedure Foo(const P: PIntegerArray);
begin
ShowMessage(IntToStr(Length(P^)));
end;

const
A: array[0..2] of Integer = (1, 2, 3);
var
B: TIntegerDynArray;

initialization
Foo(@A);
B := [4, 5, 6];
Foo(@B[0]);
end.

最佳答案

要实现此目的,您需要声明 open array参数:

procedure Foo(const A: array of integer);
begin
ShowMessage('Length of array:'+IntToStr(High(A)+1));
end;

将动态和静态数组传递给过程,数组长度由 System.High 给出。

Open array : The value, of type Integer, giving the number of elements in the actual parameter, minus one.

关于arrays - 是否可以从引用中获取(静态/动态)数组的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46759671/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com