我试了一下,程序可以运行
type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    function ComponentToString(Component: TComponent): string;
    function StringToComponent(Value: string): TComponent;
{ Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.DFM}function TForm1.ComponentToString(Component: TComponent): string;
var
  BinStream:TMemoryStream;
  StrStream: TStringStream;
  s: string;
begin
  BinStream := TMemoryStream.Create;
  try
    StrStream := TStringStream.Create(s);
    try
        BinStream.WriteComponent(Component);
        BinStream.Seek(0, soFromBeginning);
        ObjectBinaryToText(BinStream, StrStream);
        StrStream.Seek(0, soFromBeginning);
        Result:= StrStream.DataString;
    finally
        StrStream.Free;
    end;
  finally
        BinStream.Free
  end;
end;function TForm1.StringToComponent(Value: string): TComponent;
var
    StrStream:TStringStream;
    BinStream: TMemoryStream;
begin
    StrStream := TStringStream.Create(Value);
    try
        BinStream := TMemoryStream.Create;
        try
            ObjectTextToBinary(StrStream, BinStream);
            BinStream.Seek(0, soFromBeginning);
            Result := BinStream.ReadComponent(nil);
      finally
            BinStream.Free;
      end;
  finally
      StrStream.Free;
  end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Text:= ComponentToString(Button1);end;
是不是你的声明出了问题