Update utslvclauxiliary.tsf

更新数组对象
This commit is contained in:
JianjunLiu 2023-07-28 15:44:33 +08:00
parent f792da4703
commit 2a1cab45b9
1 changed files with 36 additions and 0 deletions

View File

@ -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 i<len then
begin
r+=",";
end
end
r+="]";
return r;
end
function setdata(d);
begin
if FData<>d and ifarray(d) then