小编Gus*_*ato的帖子

具有单个getter和setter的Delphi属性

我正在尝试实现配置文件类包装器,并且使用单个函数获取和使用单个函数将值设置为属性会更容易.

下面的代码是我想要实现的最低版本.

欢迎任何帮助.

unit Config;

interface

uses Rtti;

type
  Group = class(TCustomAttribute)
  strict private
    FName: string;

  public
    constructor Create(const Name: string);

    property Name: string read FName;
  end;

  IConfig = class
  protected
    function GetString: string;
    procedure SetString(const Value: string);
  end;

  TConfig = class(IConfig)
  public
    [Group('Person')]
    property Name: string read GetString write SetString;
    [Group('Person')]
    property City: string read GetString write SetString;
  end;

implementation

{ Group }

constructor Group.Create(const Name: string);
begin
  FName := Name;
end;

{ IConfig }

function IConfig.GetString: string;
begin …
Run Code Online (Sandbox Code Playgroud)

delphi attributes properties rtti

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

使用SetTimer API的Delphi匿名函数会抛出"特权指令"异常

我正在努力使用Delphi中的一些匿名方法.

当调用Execute方法和在该方法内创建的计时器超时时,它会抛出"特权指令"异常.

那是因为我的匿名功能超出了范围吗?

unit OneShotTimerReloaded;

interface

uses
  System.SysUtils, System.Classes;

type
  IOneShotTimerReloaded = interface
    ['{51DE72F0-4784-4CEB-A065-0B64D6EEA626}']

    procedure Execute(Proc: TProc; TimeOut: Cardinal = 1000); overload;
    procedure Execute(Proc: TProcedure; TimeOut: Cardinal = 1000); overload;
    procedure Execute(Event: TNotifyEvent; TimeOut: Cardinal = 1000; Sender: TObject = nil); overload;
  end;

  TOneShotTimerReloaded = class(TInterfacedObject, IOneShotTimerReloaded)
  public
    procedure Execute(Proc: TProc; TimeOut: Cardinal = 1000); overload;
    procedure Execute(Proc: TProcedure; TimeOut: Cardinal = 1000); overload;
    procedure Execute(Event: TNotifyEvent; TimeOut: Cardinal = 1000; Sender: TObject = nil); overload;
  end;

implementation

uses
  Winapi.Windows; …
Run Code Online (Sandbox Code Playgroud)

delphi api methods anonymous exception

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

标签 统计

delphi ×2

anonymous ×1

api ×1

attributes ×1

exception ×1

methods ×1

properties ×1

rtti ×1