gpt4 book ai didi

delphi - 在Delphi中的参数中传递静态字节数组

转载 作者:行者123 更新时间:2023-12-03 18:15:24 30 4
gpt4 key购买 nike

我有一个静态数组:

myArray: array [0..15] of byte;

我希望将这个数组(不是数组的副本)传递给一个函数。在函数内部,我将操作数组中的数据。

不同长度的STATIC字节数组可能会在不同的时间传入Init。因此,我不希望将 Init 声明为只能接收一定长度的字节数组。 (例如,在这种情况下它是 16 个字节。在其他时候它可能是 65000 个字节)

这是我使用函数的方式:

Init(@myArray[0]); //passing in pointer to static array

我试着这样声明 Init:

procedure Init(x: array of byte);
begin
//Do some stuff with x, for e.g.
Length(x); //I do not intend to pass in the length as a parameter,
//but determine it in this function itself.


end;

这也是声明 Init 函数参数的正确方法吗?

最佳答案

  1. 使用 Init(myArray) 而不是 Init(@myArray[0])。 Delphi 将通过引用传输 myArray
  2. 您将 x 声明为开放字节数组。开放数组参数与具有相同元素类型的数组变量类型兼容。 Delphi 将传递固定的数组长度作为隐藏参数。您可以使用 Length(x) 访问它,例如对于 i := Low(x) to High(x) do
  3. 开放数组参数不能设置为nil。如果需要将 x 设置为 nil,则必须将 x 声明为指向 Byte 的指针或指向 Byte 的数组 [..] 的指针。

关于delphi - 在Delphi中的参数中传递静态字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3911432/

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