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
|
||||
itmName := AName;
|
||||
end;
|
||||
if (AObject = nil) then
|
||||
AObject := Create();
|
||||
len := AStore.BeginArrayRead(AName,ATypeInfo,styl,itmName);
|
||||
if ( len >= 0 ) then begin
|
||||
Try
|
||||
If Not Assigned(AObject) Then
|
||||
AObject := Create();
|
||||
itmTypInfo := PTypeInfo(GetItemClass().ClassInfo);
|
||||
nativObj := AObject as TBaseObjectArrayRemotable;
|
||||
If ( len > 0 ) Then Begin
|
||||
@ -3577,6 +3577,8 @@ begin
|
||||
end else begin
|
||||
itmName := AName;
|
||||
end;
|
||||
if (AObject = nil) and Self.InheritsFrom(TBaseArrayRemotable) then
|
||||
AObject := Create();
|
||||
len := AStore.BeginArrayRead(AName,ATypeInfo, GetStyle(),itmName);
|
||||
if ( len > 0 ) then begin
|
||||
try
|
||||
|
@ -1480,12 +1480,14 @@ var
|
||||
i, c : Integer;
|
||||
locSerInfo : TPropSerializationInfo;
|
||||
begin
|
||||
if (AObject = nil) and Target.InheritsFrom(TBaseArrayRemotable) then
|
||||
AObject := Target.Create();
|
||||
oldSS := AStore.GetSerializationStyle();
|
||||
if ( osoDontDoBeginRead in Options ) or ( AStore.BeginObjectRead(AName,ATypeInfo) >= 0 ) then begin
|
||||
try
|
||||
if AStore.IsCurrentScopeNil() then
|
||||
Exit; // ???? FreeAndNil(AObject);
|
||||
if not Assigned(AObject) then
|
||||
if (AObject = nil) then
|
||||
AObject := Target.Create();
|
||||
c := FSerializationInfos.Count;
|
||||
if ( c > 0 ) then begin
|
||||
|
@ -3371,7 +3371,8 @@ begin
|
||||
x := 'a';
|
||||
f.Get(TypeInfo(TArrayOfStringRemotable),x,a);
|
||||
f.EndScopeRead();
|
||||
CheckNull(a);
|
||||
CheckNotNull(a);
|
||||
CheckEquals(0,a.Length);
|
||||
|
||||
a := TArrayOfStringRemotable.Create();
|
||||
f := CreateFormatter(TypeInfo(TClass_B));
|
||||
@ -4207,6 +4208,18 @@ begin
|
||||
f.SaveToStream(s);
|
||||
//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.SetLength(12);
|
||||
f := CreateFormatter(TypeInfo(TClass_B));
|
||||
|
Reference in New Issue
Block a user