diff --git a/funcext/tvclib/utslvclauxiliary.tsf b/funcext/tvclib/utslvclauxiliary.tsf index 16e0bad..fbe392c 100644 --- a/funcext/tvclib/utslvclauxiliary.tsf +++ b/funcext/tvclib/utslvclauxiliary.tsf @@ -1145,6 +1145,14 @@ type trefarray = class() // if not ifarray(idxs) then return nil; if ifarray(FData) then begin + if ifarrayidx(idxs) then + begin + fsettemp := v; + s := "FData"+formatarrayidx(idxs)+":=fsettemp;"; + r := eval(&(s)); + fsettemp := nil; + return r; + end return magicsetarray(FData, idxs,v); end return FData.mgset(idxs,v); @@ -1154,6 +1162,10 @@ type trefarray = class() // if not ifarray(idxs) then return nil; if ifarray(FData) then begin + if ifarrayidx(idxs) then + begin + return eval(&("FData"+formatarrayidx(idxs))); + end return magicgetarray(FData,idxs); end return FData.mgget(idxs,v); @@ -1178,7 +1190,31 @@ type trefarray = class() // property data read FData write setdata; private //³ÉÔ±±äÁ¿ FData; + fsettemp; private + function ifarrayidx(idx); + begin + for i,v in idx do + begin + if ifarray(v) then return true; + end + end + function formatarrayidx(idx); + begin + r := "["; + len := length(idx)-1; + for i ,v in idx do + begin + if ifarray(v) then r+=tostn(v); + else r+=tostn(v); + if id and ifarray(d) then