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

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

概述我有两个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;interfaceuses    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;
总结

以上是内存溢出为你收集整理的delphi – 使用包装类型的数组时出现“需要记录,对象或类类型”的错误全部内容,希望文章能够帮你解决delphi – 使用包装类型的数组时出现“需要记录,对象或类类型”的错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1245984.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存