gpt4 book ai didi

delphi - 使用数组的包装类型时出现错误 "Record, object or class type required"

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

我有两种 arapper 类型,可以轻松处理/返回一维数组,我想编写一种方法将一种类型转换为另一种类型(2d-float-Vector 类到 2d-int-point 类)。写了一个简单的,但它只是抛出一些我不明白的错误。

unit UUtil;

interface

uses

UVector2f, Types, SysUtils;

type

Vector2fArrayWrapper = array of Vector2f;
PointArrayWrapper = array of TPoint;

implementation

function toPointArray(vw : Vector2fArrayWrapper) : PointArrayWrapper;
var pw : PointArrayWrapper;
i,x,y : Integer;
begin
setLength(pw, vw.length);
for i := 0 to vw.high do
begin
x := round(vw[i].getX());
y := round(vw[i].getY());
vw[i] := TPoint(x,y);
end;
result := pw;
end;


end.

这些是我得到的错误:

[Error] UUtil.pas(20): Record, object or class type required
[Error] UUtil.pas(21): Record, object or class type required
[Error] UUtil.pas(25): ')' expected but ',' found
[Error] UUtil.pas(27): Declaration expected but identifier 'result' found
[Error] UUtil.pas(28): '.' expected but ';' found

最佳答案

动态数组不是对象、类或记录。它们没有定义方法。

而不是

vw.length

你必须写

Length(vw)

对于也是如此。

接下来,TPoint 是一种类型。如果您想创建一个新的,您可以使用辅助函数 Point()

然后你分配给vw[i],但你的意思肯定是分配给pw[i]

最后,不需要引入局部变量,然后为该局部变量分配Result。您可以直接在 Result 上完成所有工作。所以,我会编写这样的代码:

function toPointArray(const vw: Vector2fArrayWrapper): PointArrayWrapper;
var
i: Integer;
begin
setLength( Result, Length(vw));
for i := 0 to high(vw) do
Result[i] := Point(round(vw[i].getX), round(vw[i].getY));
end;

关于delphi - 使用数组的包装类型时出现错误 "Record, object or class type required",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16628849/

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