unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Controls, Graphics, Dialogs;
type
{ TMyComponent }
TMyComponent = class(TComponent)
private
FMyInt : Int64;
FMyIntArray : array of Integer;
procedure ReadMyInt(aReader: TReader);
procedure WriteMyInt(aWriter: TWriter);
procedure ReadMyIntArray(aReader: TReader);
procedure WriteMyIntArray(aWriter: TWriter);
public
procedure DefineProperties(Filer :TFiler); override;
end;
implementation
{ TMyComponent }
procedure TMyComponent.ReadMyInt(aReader :TReader);
begin
FMyInt := aReader.ReadInteger;
end;
procedure TMyComponent.WriteMyInt(aWriter :TWriter);
begin
aWriter.WriteInteger(FMyInt);
end;
procedure TMyComponent.ReadMyIntArray(aReader :TReader);
var
vLen:Integer;
begin
vLen := aReader.ReadInteger;
SetLength(FMyIntArray,vLen);
aReader.Read(FMyIntArray[0], vLen * SizeOf(Integer));
end;
procedure TMyComponent.WriteMyIntArray(aWriter :TWriter);
begin
aWriter.WriteInteger(Length(FMyIntArray));
aWriter.Write(FMyIntArray[0],Length(FMyIntArray)*SizeOf(Integer));
end;
procedure TMyComponent.DefineProperties(Filer :TFiler);
begin
inherited DefineProperties(Filer);
Filer.Defineproperty('MyInt',@ReadMyInt,@WriteMyInt, True);
Filer.Defineproperty('MyArray',@ReadMyIntArray,@WriteMyIntArray, Length(FMyIntArray)>0);
end;
end.