mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-01 05:03:47 +02:00
72 lines
1.5 KiB
ObjectPascal
72 lines
1.5 KiB
ObjectPascal
{
|
|
*****************************************************************************
|
|
This file is part of the Lazarus Component Library (LCL)
|
|
|
|
See the file COPYING.modifiedLGPL.txt, included in this distribution,
|
|
for details about the license.
|
|
*****************************************************************************
|
|
|
|
Helper functions for component serialized Pascal.
|
|
|
|
Author: Mattias Gaertner
|
|
}
|
|
unit LazPasReadUtil;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes;
|
|
|
|
{ ExecCustomCSP: Call Instance.DefineProperties with a list of properties in
|
|
TBinaryObjectWriter format. This function is used by the auto generated
|
|
Pascal of TCompWriterPas for custom DefineProperties. }
|
|
procedure ExecCustomCSP(Instance: TPersistent; const Data: array of string);
|
|
|
|
implementation
|
|
|
|
type
|
|
|
|
{ TCSPReader }
|
|
|
|
TCSPReader = class(TReader)
|
|
public
|
|
procedure ReadProperties(Instance: TPersistent);
|
|
end;
|
|
|
|
{ TCSPReader }
|
|
|
|
procedure TCSPReader.ReadProperties(Instance: TPersistent);
|
|
begin
|
|
while not EndOfList do
|
|
ReadProperty(Instance);
|
|
end;
|
|
|
|
procedure ExecCustomCSP(Instance: TPersistent; const Data: array of string);
|
|
var
|
|
MemStream: TMemoryStream;
|
|
i: Integer;
|
|
s: String;
|
|
Reader: TCSPReader;
|
|
begin
|
|
MemStream:=TMemoryStream.Create;
|
|
Reader:=nil;
|
|
try
|
|
for i:=low(Data) to High(Data) do
|
|
begin
|
|
s:=Data[i];
|
|
MemStream.Write(s[1],length(s));
|
|
end;
|
|
MemStream.Position:=0;
|
|
Reader:=TCSPReader.Create(MemStream,1024);
|
|
Reader.ReadProperties(Instance);
|
|
finally
|
|
Reader.Free;
|
|
MemStream.Free;
|
|
end;
|
|
end;
|
|
|
|
end.
|
|
|