使用 Helper class 访问一个类的私有变量

如何编写通用的 Helper Class 前言什么是 helper ?任何框架都不是万能的,而业务需求却是多种多样,很多时候我们只需要更改组件的部分属性,而 helper 就是调整细节的工具。我在之前的文章《如何编写轻量级 CSS 框架》中也举过例子,我们 阅读详情
TMyClass = class
private
  FMyName: string;
public
end;

上面是一个类的声明,有一个私有字段 FMyName;

根据 Delphi 的语法,如果我继承这个类,在继承的类里面要访问 FMyName:

TMyClass2 = class(TMyClass)
public
  constructor Create;
end;

TMyClass2.constructor;
begin
  FMyName := 'pcplayer';
end;

假设我要在新继承的类里面访问 FMyName,那么,这个 TMyClass2 必须和 TMyClass 在同一个单元。如果在不同的单元,上述 TMyClass2 的代码无法编译通过。

很多时候最好不要去修改原来的代码,也就是不要在以前的代码文件里面增减代码。有新的需求,在新的单元文件里面继承原来的类以后增加新的业务逻辑。但这里似乎不灵了。

这时候,使用 Helper Class 是一个办法:

TMyClassHelper = class helper for TMyClass
public
  constructor Create;
end;

TMyClassHelper.constructor;
begin
  //FMyName := 'pcplayer';  //这句话同样无法编译通过。

  with self do
  begin
    FMyName := 'pcplayer';  //这句话可以编译通过。也就是说,加上 with self do 就可以解决这个问题。
  end;
end;

总结:

使用 Class Helper,在其它单元,可以访问该类的私有字段。方法是加上:with self do

C++编程核心概念解析:Spawn、Archetype、Entity、Handle、Helper与Impl 在C++编程与系统设计中,理解核心设计模式与数据组织方式是提升代码质量与性能的关键。从基础概念入手,对象创建与管理涉及动态生命周期控制,而数据组织则直接影响程序执行效率。其技术价值在于通过特定的架构模式,实现资源安全引用、编译依赖最小化与缓存友好性,从而支撑高性能应用场景,如游戏开发、高并发服务器等。本文聚焦于Spawn、Archetype、Entity、Handle、Helper与Impl这六个核心术语,深入探讨它们在实体组件系统(ECS)架构中的协同机制与工程实践。其中,Archetype作为数据组织的 阅读详情

相关推荐

.NET自定义加密Helper类实战:AES-GCM、密钥派生与FIPS合规

加密Helper类本质是安全契约的代码化表达,其核心在于将密码学原理(如对称加密、密钥派生、认证加密)转化为可审计、可降级、可演进的工程实现。理解AES-GCM的Nonce唯一性约束、PBKDF2迭代次数与安全熵的量化关系、以及FIPS 140-2对算法栈的全链路管控要求,是构建生产级加密能力的前提。它支撑金融支付、医疗数据、物联网等强监管场景下的密文机密性、完整性与抗重放能力,并直接关联等保三级、GDPR及PCI DSS合规落地。本文聚焦.NET平台下自定义加密Helper类的设计逻辑与硬核细节。

SailingAptech的专栏 385

w ndows8怎么连接网络,关于windows8连接wifi显示 无法连接到此网络

最近笔记本连接wifi这样每次连接热点的时候网络连接的地方就会这样自动禁用wifi,然后连接各种热点都是这样,用宽带连接一切正常,就是wifi有问题,于是去查找了一下事件管理器相伴的还有三个事件日志名称: System来源: Microsoft-Windows-Diagnostics-Networking日期: 2016/1/5 23:...

weixin_39892460的博客 1211

把类写小:从 ABAP Class Size 限制到 Gateway / RAP 的工程化拆分实践

ABAP类大小优化的关键策略 摘要:SAP官方指南明确指出ABAP类应遵循组件数量(≤65,536)和内存占用(≤500KB)的硬性限制,但实际开发中更常见的是因"万能类"导致的可维护性问题。大类的代价体现在两方面:开发阶段的理解成本(类方法过多导致逻辑耦合)和运行时的内存消耗(整个类被装载)。解决方案包括: 职责拆分:将Gateway OData服务中的巨型DPC_EXT类按实体拆分为路由器和多个专注单一实体的handler类,通过工厂模式实现解耦 作用域控制:将仅限局部使用的功能(如

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2822

TMemoryStream 私有变量FSize 访问父类私有变量

TCustomMemoryStream = class(TStream) private FMemory: Pointer; FSize, FPosition: NativeInt; protected procedure SetPointer(Ptr: Pointer; const Size: NativeInt); public function R

ksrsoft的专栏 1278

多标签分类怎么做?(Python)

首先简单介绍下,多标签分类与多分类、多任务学习的关系: 多分类学习(Multi-class):分类器去划分的类别是多个的,但对于每一个样本只能有一个类别,类别间是互斥的。例如:分类器判断这只动物是猫、狗、猪,每个样本只能有一种类别,就是一个三分类任务。常用的做法是OVR、softmax多分类

y1282037271的博客 1359

超10万,两台Mac Studio在家就能跑满血DeepSeek,网友:这是性价比最高的大模型一体机

在AI计算领域,没有比这更强的个人电脑了。这要从它的架构说起。对于那些有本地部署满血版DeepSeek需求的用户,目前建议的配置是选购512GB统一内存 + 1TB SSD,搭载M3 Ultra芯片的Mac Studio,官网售价74249元,可以叠加国补、教育优惠、12期分期等,这可能是目前门槛最低、性价比最高的满血版DeepSeek本地部署方案。对于企业而言,尽管Mac Studio确实可以部署6000亿参数的大模型,但在内存带宽、模型精调服务等方面,跟专用的大模型一体机仍有差距,采购需要谨慎评估。

2501_90444774的博客 1917

技术演进中的开发沉思-70 DELPHI VCL系列:四个类别的妙用之处

围绕 VCL 设计中四个关键 “坎” 展开。辅助类别如同给旧工具装新零件,能为 VCL 原生类加功能,节省工作量;单元的 Initialization 和 Finalization 块像茶馆规矩,负责程序的初始化与终结,却有执行顺序讲究;破解类似万能钥匙,可突破封装限制,却有风险;析构函数如出差收拾行李,是程序退场的最后防线。这四点皆是 VCL 的 “权衡术”,体现着解决问题的智慧,技术会过时,但这些智慧在代码中永存。

你的天空阅读专栏 858

UA-DETRAC数据集转YOLO格式

UA-DETRAC转YOLO

lafsca5的博客 9107

Android wifi-framework WifiMonitor和WifiNative学习

WifiStateMachine作为wifi-framework层最核心的类,其他很多wifi的类都是为其服务的,接下来记录下对WifiNative和WifiMonitor这两个类的学习。 两者都是WifiStateMachine在构造函数中创建的,是WifiStateMachine中重要的成员。1、WifiNativeWifiNative是一个接口类,主要是提供一些native方法用于wifi-

myvest的专栏 2345

Docker新手必看:解决‘Unable to find image’错误的完整指南

本文针对Docker新手常见的‘Unable to find image’错误,提供了完整的排查与解决指南。文章深入剖析了权限不足、网络连接失败、Docker服务未运行等核心原因,并给出了将用户加入docker组、配置镜像加速器等实用解决方案,帮助读者彻底理解并解决镜像拉取问题。

weixin_29230901的博客 241

GATK SNP过滤参数优化:从标准到个性化调整的实践指南

本文深入探讨了GATK SNP过滤参数的个性化调整策略,强调不应盲目套用官方标准参数。文章详细拆解了QD、FS、SOR等关键过滤参数的含义,并提供了通过数据分布分析、文献调研和迭代测试来确定适合自身数据(如动植物重测序)最佳阈值的实践方法,旨在帮助研究者在保留真实变异与剔除假阳性信号之间找到最优平衡。

weixin_29216049的博客 275

如何访问私有成员变量和函数

一说到修改 Delphi 源码或者访问对象的私有成员函数,很多人马上可以说出种种危害来否定我。这种做法我也提倡,但是有时候如果可以灵活运用,可以解决由于 Delphi 因为封装不正确而带来的问题。我在这里分享一些技巧:1.     访问私有成员变量如果是 protected 的变量,可以用如下方法访问:type  TSomeClassAccess = class(TSomeClass)

stanleyxu 的秘密基地 4224

C# 实现 Modbus 通信全教程(支持 TCP 和 RTU,含完整错误处理)

环境准备:安装 NModbus4 库,明确设备参数(IP/串口、地址、数据类型);连接设备:TCP 用 TcpClient,RTU 用 SerialPort,注意超时和参数匹配;读写数据:根据数据类型调用对应方法(读保持寄存器用 ReadHoldingRegisters);错误处理:捕获连接、超时、协议等异常,针对性排查问题。掌握这些后,即可轻松实现与工业设备的 Modbus 通信,为上位机开发提供稳定的数据交互能力。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 2066

Helper 类在Java和C++中的设计

Java 有三个选择 1)采用普通的类 有公有构造函数,没有成员变量,提供了很多成员函数作为方法,调用代码如下: Helper helper = new Helper(); helper.f1(); 这种方法的缺点是创建对象的开销是不必要的,我们知道创建对象意味着,首先要分配内存,然后在该内存上创建对象。在一个大量创建helper对象的场景中,这种负担是很大的。 ...

编程资料大全 132

提示词工程在机器翻译质量提升中的应用

Introduction to Prompt Engineering in Machine Translation Quality Improvement Keywords

AI天才研究院 1151

001、NPU是什么?为什么嵌入式设备需要它?

本文通过作者调试工业相机板卡的经历,引出嵌入式设备为何需要NPU(神经网络处理器)的探讨。文章对比了CPU和NPU的设计哲学差异,指出NPU通过专用乘加器阵列和优化的数据流,能高效处理神经网络运算。作者分析了嵌入式设备使用NPU的三大优势:算力提升、功耗降低和实时性保障,并介绍了三类常见NPU形态。通过一个YOLOv5模型调试案例,揭示了NPU使用中的常见陷阱,最后给出五条实用建议,强调理解NPU原理和局限的重要性。文章生动展现了NPU在嵌入式AI应用中的关键作用。

m0_50546716的博客 125

Java单元测试进阶:利用反射机制精准测试私有方法

单元测试是软件质量保障的基石,它通过隔离验证代码单元的行为来确保功能正确性。其核心原理是在不依赖外部环境的情况下,对函数或方法进行输入输出验证。在Java生态中,JUnit是事实上的单元测试标准框架,它提供了丰富的断言机制来定义预期结果。然而,当面对遵循封装原则设计的私有方法时,传统的测试手段往往失效,导致测试覆盖率出现缺口,隐藏的逻辑缺陷难以被发现。通过结合Java的反射机制,开发者可以在运行时动态访问和调用私有方法,从而实现对内部逻辑的直接验证。这一技术方案尤其适用于验证核心业务算法、复杂条件分支等关键

weixin_34007020的博客 1164

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

MobileInfo 架构解析:ContentProvider 自动初始化 + Helper 设计如何让 SDK 简单好用

MobileInfo 是一款面向 Android 的设备硬件信息 SDK,它最聪明的地方在于两个设计决策:用 **ContentProvider 实现自动初始化**(无需在 Application 里写一行 init 代码),以及用 **Helper + Info + Bean 三层结构**把 CPU、内存、电池、摄像头等 30 多种设备信息统一封装成「一个静态方法返回一个 JSON」。对新手开发

gitblog_01185的博客 359

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

2 Creating Class

1 Using a class The operator “.” is called the member access operator String is a kind of object and has its own methods, feo example // Return character value at the index public char charAt(int in...

weixin_43238442的博客 238

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【Java】类和对象 看这一篇就够了!

本文将系统讲解 Java 面向对象编程的基础:类 和 对象 的概念、定义、使用,以及构造方法、this 关键字、封装等核心知识点。

xingzi1019的博客 795

类和对象 [ 启蒙 ]

•class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或者成员函数(与结构体极为相似);•为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_ 或者 m开头,注意C++中这个并不是强制的,只是⼀些惯例,具体看公司的要求;•。

Small_entreprene的博客 692
上一篇: Delphi 写 WebService 架构的三层程序如何维护 Session
下一篇: Delphi WebService Soap 一次提交多个 ClientDataSet 的简单方法
pcplayer
博客等级 码龄26年 633粉丝 284原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值