You've already forked lazarus-ccr
Empty arrays should be created.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4199 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -2674,11 +2674,11 @@ begin
|
|||||||
end else begin
|
end else begin
|
||||||
itmName := AName;
|
itmName := AName;
|
||||||
end;
|
end;
|
||||||
|
if (AObject = nil) then
|
||||||
|
AObject := Create();
|
||||||
len := AStore.BeginArrayRead(AName,ATypeInfo,styl,itmName);
|
len := AStore.BeginArrayRead(AName,ATypeInfo,styl,itmName);
|
||||||
if ( len >= 0 ) then begin
|
if ( len >= 0 ) then begin
|
||||||
Try
|
Try
|
||||||
If Not Assigned(AObject) Then
|
|
||||||
AObject := Create();
|
|
||||||
itmTypInfo := PTypeInfo(GetItemClass().ClassInfo);
|
itmTypInfo := PTypeInfo(GetItemClass().ClassInfo);
|
||||||
nativObj := AObject as TBaseObjectArrayRemotable;
|
nativObj := AObject as TBaseObjectArrayRemotable;
|
||||||
If ( len > 0 ) Then Begin
|
If ( len > 0 ) Then Begin
|
||||||
@ -3577,6 +3577,8 @@ begin
|
|||||||
end else begin
|
end else begin
|
||||||
itmName := AName;
|
itmName := AName;
|
||||||
end;
|
end;
|
||||||
|
if (AObject = nil) and Self.InheritsFrom(TBaseArrayRemotable) then
|
||||||
|
AObject := Create();
|
||||||
len := AStore.BeginArrayRead(AName,ATypeInfo, GetStyle(),itmName);
|
len := AStore.BeginArrayRead(AName,ATypeInfo, GetStyle(),itmName);
|
||||||
if ( len > 0 ) then begin
|
if ( len > 0 ) then begin
|
||||||
try
|
try
|
||||||
|
@ -1480,12 +1480,14 @@ var
|
|||||||
i, c : Integer;
|
i, c : Integer;
|
||||||
locSerInfo : TPropSerializationInfo;
|
locSerInfo : TPropSerializationInfo;
|
||||||
begin
|
begin
|
||||||
|
if (AObject = nil) and Target.InheritsFrom(TBaseArrayRemotable) then
|
||||||
|
AObject := Target.Create();
|
||||||
oldSS := AStore.GetSerializationStyle();
|
oldSS := AStore.GetSerializationStyle();
|
||||||
if ( osoDontDoBeginRead in Options ) or ( AStore.BeginObjectRead(AName,ATypeInfo) >= 0 ) then begin
|
if ( osoDontDoBeginRead in Options ) or ( AStore.BeginObjectRead(AName,ATypeInfo) >= 0 ) then begin
|
||||||
try
|
try
|
||||||
if AStore.IsCurrentScopeNil() then
|
if AStore.IsCurrentScopeNil() then
|
||||||
Exit; // ???? FreeAndNil(AObject);
|
Exit; // ???? FreeAndNil(AObject);
|
||||||
if not Assigned(AObject) then
|
if (AObject = nil) then
|
||||||
AObject := Target.Create();
|
AObject := Target.Create();
|
||||||
c := FSerializationInfos.Count;
|
c := FSerializationInfos.Count;
|
||||||
if ( c > 0 ) then begin
|
if ( c > 0 ) then begin
|
||||||
|
@ -3371,7 +3371,8 @@ begin
|
|||||||
x := 'a';
|
x := 'a';
|
||||||
f.Get(TypeInfo(TArrayOfStringRemotable),x,a);
|
f.Get(TypeInfo(TArrayOfStringRemotable),x,a);
|
||||||
f.EndScopeRead();
|
f.EndScopeRead();
|
||||||
CheckNull(a);
|
CheckNotNull(a);
|
||||||
|
CheckEquals(0,a.Length);
|
||||||
|
|
||||||
a := TArrayOfStringRemotable.Create();
|
a := TArrayOfStringRemotable.Create();
|
||||||
f := CreateFormatter(TypeInfo(TClass_B));
|
f := CreateFormatter(TypeInfo(TClass_B));
|
||||||
@ -4207,6 +4208,18 @@ begin
|
|||||||
f.SaveToStream(s);
|
f.SaveToStream(s);
|
||||||
//s.SaveToFile(wstExpandLocalFileName('TTestFormatter.Test_ObjectArray.' + f.GetFormatName()));
|
//s.SaveToFile(wstExpandLocalFileName('TTestFormatter.Test_ObjectArray.' + f.GetFormatName()));
|
||||||
|
|
||||||
|
areaded := nil;
|
||||||
|
f := CreateFormatter(TypeInfo(TClass_B));
|
||||||
|
s.Position := 0;
|
||||||
|
f.LoadFromStream(s);
|
||||||
|
x := 'Root';
|
||||||
|
f.BeginObjectRead(x,TypeInfo(TClass_B));
|
||||||
|
x := 'a';
|
||||||
|
f.Get(TypeInfo(TClass_A_Array),x,areaded);
|
||||||
|
f.EndScopeRead();
|
||||||
|
CheckNotNull(areaded);
|
||||||
|
CheckEquals(0,areaded.Length);
|
||||||
|
|
||||||
areaded := TClass_A_Array.Create();
|
areaded := TClass_A_Array.Create();
|
||||||
areaded.SetLength(12);
|
areaded.SetLength(12);
|
||||||
f := CreateFormatter(TypeInfo(TClass_B));
|
f := CreateFormatter(TypeInfo(TClass_B));
|
||||||
|
Reference in New Issue
Block a user