parent
f792da4703
commit
2a1cab45b9
|
|
@ -1145,6 +1145,14 @@ type trefarray = class() //
|
||||||
if not ifarray(idxs) then return nil;
|
if not ifarray(idxs) then return nil;
|
||||||
if ifarray(FData) then
|
if ifarray(FData) then
|
||||||
begin
|
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);
|
return magicsetarray(FData, idxs,v);
|
||||||
end
|
end
|
||||||
return FData.mgset(idxs,v);
|
return FData.mgset(idxs,v);
|
||||||
|
|
@ -1154,6 +1162,10 @@ type trefarray = class() //
|
||||||
if not ifarray(idxs) then return nil;
|
if not ifarray(idxs) then return nil;
|
||||||
if ifarray(FData) then
|
if ifarray(FData) then
|
||||||
begin
|
begin
|
||||||
|
if ifarrayidx(idxs) then
|
||||||
|
begin
|
||||||
|
return eval(&("FData"+formatarrayidx(idxs)));
|
||||||
|
end
|
||||||
return magicgetarray(FData,idxs);
|
return magicgetarray(FData,idxs);
|
||||||
end
|
end
|
||||||
return FData.mgget(idxs,v);
|
return FData.mgget(idxs,v);
|
||||||
|
|
@ -1178,7 +1190,31 @@ type trefarray = class() //
|
||||||
property data read FData write setdata;
|
property data read FData write setdata;
|
||||||
private //³ÉÔ±±äÁ¿
|
private //³ÉÔ±±äÁ¿
|
||||||
FData;
|
FData;
|
||||||
|
fsettemp;
|
||||||
private
|
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);
|
function setdata(d);
|
||||||
begin
|
begin
|
||||||
if FData<>d and ifarray(d) then
|
if FData<>d and ifarray(d) then
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue