ソースを参照

* Implemented streaming support

sg 25 年 前
コミット
9692da34dc
1 ファイル変更36 行追加7 行削除
  1. 36 7
      fcl/inc/stringl.inc

+ 36 - 7
fcl/inc/stringl.inc

@@ -89,11 +89,22 @@ end;
 
 
 
-Procedure TStrings.ReadData(Reader: TReader);
-
+procedure TStrings.ReadData(Reader: TReader);
 begin
+  Reader.ReadListBegin;
+  BeginUpdate;
+  try
+    Clear;
+    while not Reader.EndOfList do
+      Add(Reader.ReadString);
+  finally
+    EndUpdate;
+  end;
+  Reader.ReadListEnd;
 end;
 
+
+
 Function GetQuotedString (Var P : Pchar) : AnsiString;
 
 Var P1,L : Pchar;
@@ -189,16 +200,31 @@ end;
 
 
 
-Procedure TStrings.WriteData(Writer: TWriter);
-
+procedure TStrings.WriteData(Writer: TWriter);
+var
+  i: Integer;
 begin
+  Writer.WriteListBegin;
+  for i := 0 to Count - 1 do
+    Writer.WriteString(Strings[i]);
+  Writer.WriteListEnd;
 end;
 
 
 
-Procedure TStrings.DefineProperties(Filer: TFiler);
-
+procedure TStrings.DefineProperties(Filer: TFiler);
+var
+  HasData: Boolean;
 begin
+  if Assigned(Filer.Ancestor) then
+    // Only serialize if string list is different from ancestor
+    if Filer.Ancestor.InheritsFrom(TStrings) then
+      HasData := not Equals(TStrings(Filer.Ancestor))
+    else
+      HasData := True
+  else
+    HasData := Count > 0;
+  Filer.DefineProperty('Strings', @ReadData, @WriteData, HasData);
 end;
 
 
@@ -980,7 +1006,10 @@ end;
 
 {
   $Log$
-  Revision 1.1.2.2  2000-12-03 22:32:27  sg
+  Revision 1.1.2.3  2001-01-10 16:58:25  sg
+  * Implemented streaming support
+
+  Revision 1.1.2.2  2000/12/03 22:32:27  sg
   * Applied patch by Markus Kaemmerer:
     - Added support for TStringList.CustomSort