小编Spa*_*ook的帖子

隐藏成员变量和/或过程时,编译器不会发出警告

当我忘记在最近添加关键词'virtual'和'override'时,我会在意外地为派生类中的过程使用相同的名称时发出编译器警告.我没有,现在我不明白为什么.我需要做些什么来获取隐藏基本成员和方法的警告?

根据这个答案(Jim McKeeth,毫无疑问是正确的):

如果在后代类中声明一个与祖先类中的方法同名的方法,那么您将隐藏该祖先方法 - 这意味着如果您有该后代类的实例(被引用为该类)那么您将没有得到祖先的行为.编译器会给你一个警告.

但是,令我惊讶的是这段代码没有给我一个警告:

unit Unit1;

interface

{$WARNINGS ON}
{$WARN HIDING_MEMBER ON}
{$WARN HIDDEN_VIRTUAL ON}
// I understand the two lines above are superfluous.
// I put them there to demonstrate that I have tried to enable these
// warnings explicitly.

type
    TBase = class
    public
        SomeMember: integer;
        procedure Foo;
    end;

type
    TDerived = class (TBase)
    public
        SomeMember: integer;
        procedure Foo;
    end;

implementation


{ TBase }

procedure TBase.Foo;
begin

end;

{ TDerived }

procedure TDerived.Foo; …
Run Code Online (Sandbox Code Playgroud)

delphi polymorphism compiler-warnings

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

如何给服务添加服务SID?

我有一个内置 TCP/IP 服务器的 Windows 服务。客户端和连接以及分发一些信息等。通常安装该服务以作为网络服务登录。

有一些数据存储在 ProgramData 下的文件夹中,因此在安装过程中向该服务授予对该文件夹的读/写访问权限。但是,通常会使用网络服务帐户授予对所有服务的访问权限。据我所知,可以使用ChangeServiceConfig2和 SERVICE_CONFIG_SERVICE_SID_INFO 添加特定的服务 SID。然而,从那里开始,根本不清楚如何继续,以及这是否是我的问题的解决方案。

任何帮助将非常感激!

windows service windows-services windows-security

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