gpt4 book ai didi

delphi - 迭代记录字段

转载 作者:行者123 更新时间:2023-12-01 19:58:32 24 4
gpt4 key购买 nike

如何用for循环遍历G1-G4的记录字段?

  TrFireGroup = record   
idx: integer;
G1: integer;
G2: integer;
G3: integer;
G4: integer;
FGroup: integer;
MstIdx: integer;
Status: byte;
procedure Clear;
end;

最佳答案

这可能不是一个好主意,但有可能。

procedure Test();
var
i: Integer;
rec: TrFireGroup;
GPtr: PInteger;
value: Integer;
begin
// Initialize rec ...

// Get pointer to first G? field
GPtr := @rec.G1;

// Loop over G fields
for i := 0 to 3 do
begin
// Use value G? field here...
// For example: value := GPtr^;

// Increment pointer, thus moving it with four bytes.
Inc(GPtr);
end;
end;
  • 首先获取指向记录中第一个字段的指针 (GPtr)。

  • 然后,我们通过取消引用指针来使用该值 (GPtr^)。

  • 最后,将指针增加到下一个值 (Inc(GPtr))。请注意,增量是根据所引用类型的大小移动指针。

    当我们使用指向 Integer (PInteger) 的指针时,Inc 使用 SizeOf(Integer) 移动指针,从而前进到记录中的下一个字段。

再说一遍,这不是一个好的做法。

在这种情况下,指针算术是多余的,除非记录中有数百个字段(这是非常罕见的),但如果您确实需要,这是一种方法。

仅供引用,这里有关于 Delphi 中的指针和指针算术的非常详细和高质量的解释:

关于delphi - 迭代记录字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35773695/

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