小编Hen*_*nri的帖子

当 TRttiProperty.SetValue 与 TMemoryStream 属性一起使用时,如何避免内存泄漏?

我用SourceProperties[0].SetValue(lObject, lStream)设置MemoryStream : TMemoryStream的属性lObject

如果我随后释放了lStream, 的MemoryStream属性lObject似乎被设置为nil

如果我不释放lStream,就会出现内存泄漏。

通过 RTTI将 分配lStreamMemoryStream属性的正确方法是什么?

下面列出了完整的示例代码:

unit Unit28;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics,
  FMX.Controls.Presentation, FMX.StdCtrls, System.Rtti;

type
  TMyObject = Class(TObject)
  private
    pMemoryStream : TMemoryStream;
  published
    property MemoryStream : TMemoryStream read pMemoryStream  write pMemoryStream;
    constructor Create;
    destructor  Destroy;override;
  end;

type
  TForm28 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject); …
Run Code Online (Sandbox Code Playgroud)

delphi rtti

1
推荐指数
1
解决办法
82
查看次数

标签 统计

delphi ×1

rtti ×1