delphi - Error "Record, object or class type required" when using a wrapper type of an array -
i have got 2 arapper types easy handling /returning of one-dimensional arrays, , want write method convert 1 (a 2d-float-vector class 2d-int-point class). wrote simple one, throws errors don´t understand.
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); := 0 vw.high begin x := round(vw[i].getx()); y := round(vw[i].gety()); vw[i] := tpoint(x,y); end; result := pw; end; end. these errors get:
[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 ',' found [error] uutil.pas(27): declaration expected identifier 'result' found [error] uutil.pas(28): '.' expected ';' found
dynamic arrays not objects, classes or records. not have methods defined on them.
instead of
vw.length you must write
length(vw) and likewise high.
next up, tpoint type. if want make new one, use helper function point().
then assign vw[i], surely mean assign pw[i].
finally, there's no need introduce local variable, , assign result local variable. can work directly on result. so, i'd write code this:
function topointarray(const vw: vector2farraywrapper): pointarraywrapper; var i: integer; begin setlength( result, length(vw)); := 0 high(vw) result[i] := point(round(vw[i].getx), round(vw[i].gety)); end;
Comments
Post a Comment