我正在尝试实现配置文件类包装器,并且使用单个函数获取和使用单个函数将值设置为属性会更容易.
下面的代码是我想要实现的最低版本.
欢迎任何帮助.
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中的一些匿名方法.
当调用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)