[QPlugins] 使用 QPlugins 的通知机制

首先,我们要知道 QPlugins 的通知机制使用了订阅发布模式。一个通知或叫主题有两个重要的属性: 名称(Name) 名称是通知类型的名字,必需在整个插件系统中保证唯一,同名的被认为是一个类型的通知。当跨进程通信时,是靠名称而不是 ID 来唯一区分通知。 编号(ID) 一个进程唯一的编号(为什么是进程唯一,这个问题好

[QPlugins] 常见问题答问

1、QPlugins 是什么? QPlugins 是一个插件管理引擎,它基于 Delphi 编写,支持各种语言做为宿主和插件。虽然是一个插件引擎,但 QPlugins 更想强调的是服务的概念,而不是插件。插件在 QPlugins 里只是各种服务的容器,各种服务才是 QPlugins 想要整合的主体。QPlugins 的

VCL DLL 中如何解决 Tab 键不好使的问题?

QPlugins 支持 DLL 插件,但是,插件中的窗体如果要嵌入主窗体的某个控件上,往往会发生一些奇怪的事情,百度 Delphi DLL Form 大约可以搜索到 860,000 个结果,大家给出的解决方案千奇百怪。本文提供的解决方法反而可能是最简单的了。 首先声明一下,这个不是最完美的解决方案,QPlugins 里

[QPlugins] 如何编写基于 QPlugins 的插件程序

QPlugins 插件引擎目前正在开发过程中,目前已经可以编写基于 QPlugins 的插件了。QPlugins 中每个插件提供一到多种服务,这些服务被注册到全局的 PluginsManager 实例中,这个实例在所有的插件中都是可以直接访问的。 PluginsManager 将服务划分为三类: 1、加载器(Loade

GIF 动画建立

【Windows】获取函数地址所对应的DLL或EXE地址

下面这个函数可以让你知道一个函数来自那里DLL或者是不是当前可执行文件内部实现的函数,参考代码如下:

这个函数的用法比较简单,比如我们要看一下 IDBService 这个服务实例是由那个 DLL 创建的: [crayon-58b2cac2abbab749

QString 单元新增 TQBits 实现

TQBits 是用于方便设置标志位的一个实现,它实现对特定位的存取,以节省存贮空间。

通过 Size 属性可以调用 TQBits 的存贮空间大小,该尺寸始终是 8  的整数倍 ( 1 个字节 8 位),IsSet可以用来设置或移除某位,而 Bytes 属

[教程] C++ 的程序结构

1、函数 函数是人为的将一段具有某一功能的代码按特定的格式组织在一起,以便在程序的其它地方随时调用的一块代码的实体。在 C/C++ 中,它的格式为: [修饰符] 返回值类型 [修饰符] 函数名([参数列表])[修饰符] { [函数实现] } 初学时,我们暂时先不考虑各种修饰符,只关系核心的部分: 返回值类型:用于给调用

[QDB] 一个新的原生二进制转换器,生成文件的体积最小

QDB 新实现了一个 TQBinaryConverter 做为原生的二进制格式,它的源码位于 qconverter_stds.pas 里,相比 MsgPack、Json 及 FireDAC  的二进制格式,其体积也更小,速度也更快。同样 10 万条记录,下面是几种格式的保存结果对比(均未压缩): TQBinaryCon

[教程] 一个程序的基本逻辑

首先,什么是程序? 程序实际上是一堆命令和逻辑判断的组合,就象我们说话,只是词汇和逻辑判断的组合一样。我们人说话最基本的是拼音,然后不同的读音的字符拼在一起,形成逻辑上合理的一句话。而计算机最基本的部分被称为关键词,然后将这些关键词拼在一起,形成逻辑上合理的一句命令操作。我们来看看基本的关键词: 交付 我们生活中将一个

[QString] 更新: HashOf 的算法更新为 BKDR

【更新说明】 关于 BKDR 算法本身,请自行百度。算法本身效率不是特别高,但效果相对不错,QString 在 Windows 平台下,使用汇编来提升效率(性能翻倍),而在其它平台,则使用纯 Pascal 实现。 提醒大家注意,没有真正完美通用的哈希算法,哈希的目的只是将内容尽可能的平均分布,有些数据本身就有这样的特性

[QLog] – 增加了按天分割文件日志的功能

【更新说明】 按文件记录日志时,通过 SetDefaultLogFile 函数可以设置为按天生成日志,也就是说,一旦日志日期切换为第二天,就会将旧的日志文件保存为独立的文件,从而方便查阅。 SetDefaultLogFile 又以下几个参数,分别对日志文件的生成方式和文件名进行限制:   AFileName

[QWorker] 使用QWorker的延迟功能快速断掉一个无效的TCP连接

TCP 协议经历了漫长的时间发展到现在,其连接到一个地址时,如果对方地址不存在而且没有 ICMP 协议返回目标不可达消息时,连接就会漫长的等待重试失败。这显然在网络带宽比 TCP 协议产生时高出不知道 N 倍的今天,是一个没有意义的等待,而当我们想要控制这个连接时间,我们会发现我们竟然无从下手(至少我不知道,也许你知道