加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 使用包装类型的数组时出现“需要记录,对象或类类型”

发布时间:2020-12-15 09:18:35 所属栏目:大数据 来源:网络整理
导读:我有两个arapper类型,便于处理/返回一维数组,我想写一个方法将一个转换为另一个(2d-float-Vector类到2d-int-point类).写了一个简单的,但它只是抛出一些我不明白的错误. unit UUtil;interfaceuses UVector2f,Types,SysUtils;type Vector2fArrayWrapper = arra
我有两个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上完成所有工作.所以,我写这样的代码:

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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读