【教程】一种远程控制电脑的方法和实践

【硬件准备】 支持网络唤醒(WOL)的电脑主机一台(笔记本还是台式机随意,使用有线连接,无线网卡),开启网络唤醒功能: 硬件设置:进入BIOS,将“Power Management Setup”中的“Wake Up On LAN”或“Resume by LAN”项设置为“Enable”或“On”,类似于这样,因为主板不

[教程]在 Deepin Linux 20.02 下使用英菲克M1BS三模蓝牙鼠标

直接在设备自带的设置里,选择蓝牙连接没有反应,需要手工操作: 1、打开终端,输入 sudo bluetoothctl 进入蓝牙控制台。 2、鼠标模式切换到蓝牙 5.0 模式(单按【模式切换键】切换到蓝牙 5.0 模式,然后长按 3 秒,看指示灯快闪后松开) 3、在蓝牙控制台,输入 devices,找到鼠标对应的设备Id

[教程]如果在 Delphi /C++ Builder 中调试单元初始化时的错误

有时候,我们程序在进入 Main 函数入口前,就开始报错,比如 Acesss volation at XXX read at yyyy 一类的错误。这类错误一般是由于单元之间的引用关系和初始化顺序不一致造成的。比如单元 A 的初始化代码调用了单元 B 的函数,但单元 B 此时尚未初始化,所以其使用到的一些全局或静态变量

[教程]VCL 中 TScrollBox 的一处 Bug 简单处理

TScrollBox 如果在设计时,滚动条的位置没有初始化到最开始的位置,或者不小心动了,可能就会存在特定的元素显示不出来的情况,此时,如果不考虑修改 VCL 源码,可以调用 ScrollInView 将最边缘的元素滚动到可视区,然后再设置对应滚动条的位置为 0 来解决。当然最根本的还是官方修复。

[分享]一种将 Delphi 组件属性信息保存到JSON的方法

此代码支持 Delphi 2007+,使用 QJSON 做为序列化的支持库。你可以自己改为使用其它的 JSON库(注:此文写法未完善,仅为示意)。 使用示例: 如上面的示例,由于写成了 class helper,所以保存到 Json 里,直接调用组件实例的 SaveToJson 就可以了,而从 Json 中恢复则直接调

Linux 下使用虚拟系统管理器创建 Windows 的 KVM 虚拟机

1、使用 raw 还是 qcow2 的问题:如果不考虑快照的问题,raw 性能更好。如果你对快照啥的很关心,就需要选择 qcow2。 2、客户机驱动:优先使用 virt-io,但显卡目前如果客户机操作系统是 Windows,只能选择 qxl (驱动暂时不支持)。驱动下载地址(使用迅雷下载,国外网址,下载速度慢):官方最

[FMX]放大二维码显示

在以前的文章中,我介绍过如何在 FMX 中绘制二维码,但没有给出放大显示的代码,这里给出下,方便大家使用。 然后直接调用 ScaleQRBitmap 就可以了。注意 ASize 的计算应考虑进入 SceneScale 的值。参考代码如下: 程序运行效果:

[教程]基于 RTTI 创建特定类型的实例

在 Delphi 人群中,有些人总想通过名称,然后动态创建指定类的实例而不得其门而入,不得不将类型先注册,然后再回调解决这个问题。实际上,通过 RTTI 来创建实例是有办法的。下面是基本的步骤: 1、找到类型对应的 TRttiType 信息。这里有几个方法: GetType 方法,这个需要知道目标类型的 TClass/

使用 ProcessExplorer 查看 Delphi/C++ Builder 的线程调用栈

ProcessExplorer 可以查看运行中进程的各种信息,包括特定线程的堆栈信息。这在我们程序出现死循环或者无响应时等问题时,除了在客户机器上重装一套环境或Remote Debugger 之外(吐槽下 PAServer/RemoteDebugger 在 Windows 下真心不太好用),另外一种在客户机器上能够找到

[QHttpRequest]使用自定义 DNS 来应对 DNS 劫持

为了保证业务的稳定性,避免在由于用户的 DNS 服务器返回错误的 IP 地址,造成程序无法正常运行的情况,QHttpRequest 新增了一个 OnDnsLookup 事件,以便让用户自己处理 DNS 请求。 举个例子:我们要获取 https://blog.qdac.cc 的内容,如果我们指定了 OnDnsLookup

[教程]栈上接口对象在匿名函数中的使用时请注意内存泄露问题

首先看下面的示例代码: 一般来说,我们认为 Delphi 自己管理接口的引用计数,所以不太会注意,但是,在上面的示例中,由于要保证 ATest 在匿名函数中的可用性,Delphi 并没有在函数退出时,减少 ATest 的引用计数,而在匿名函数执行完成后,同样也并没有减少计数,这就造成了 ATest 实例的引用计数没有减

[教程]使用 Delphi 获取当前操作系统的时区

嗯,这段代码实际上已经集成到 QString 单元了,所以你可以直接调用 GetTimezone 函数来获得时区了。用 GetTimezoneText 可以获得时区的字符串表示。 代码不长,用起来也简单,它实际上返回的时区对应的分钟数,比如北京时间是480,也就是 8 小时,其它依次类推。使用 GetTimezonTe

[转]LEO原创-FMX之你不知道的ARC

源贴地址 FMX加入了ARC技术,对象创建后不用释放,FMX会帮你释放,是不是这样就不用关心对象的释放了呢,非也! 写简单的代码,这个功能也许很好用,但如果你写的是一个项目,那隐藏的坑无形中大大的增加开发难度, 开发人员需要更加小心注意对象的释放问题:你原来正常运作的代码,在FMX下,极有可能运作不正确,灵异现象熊出落

[FMX]使用 TListBox.ItemsExchange 而不是??来交换列表中两个项目的顺序

上面的 ?? 有没有几个想当然的和我一样,试图用 TListBox.Items.Exchange 来交互两个项目的顺序的?如果你那么做了,恭喜您,迷茫吧~~,彷徨吧~~,陪我一起放羔羊吧~~~ p实际上官方看来也知道这个问题,在TListBox的级别上直接提供了一个 ItemsExchange 函数来完成这一工作。我想

[FMX]为 TControl 增加 DisableAlign 和 EnableAlign 方法

官方没有提供这两个方法,但我们有时候需要调整 FMX 的布局,而这一切都需要修改 FDisableAlign 这个受保护的成员的值,而要修改它的值,在以前的文章中提供了好几种方法,当然最简单的是直接加 class helper。这里我们就采用这一办法。 代码很简单,不需要解释,上面的函数都是返回之前是否允许对齐。要禁止

[教程]Delphi 下一种简单的水印图片制作方法

水印在现代社会中常用,网上有各种制作水印的办法,而我要说的办法,实际上简单而且好理解,那就是制作半透明的 PNG 图片覆盖到原始项目上就可以了。至于为啥不说 FMX 的实现,是因为 FMX 本身各种颜色设置中就包含了透明度信息,不需要这么折腾了。 第一步:制作水印内容,比如我们创建一个TBitmap对象,在上面随便输出

[QLog]使用 CalcPerf 来查询函数性能瓶径

QLog 最新的变动修改了 CalcPerf 函数的返回值类型,改为返回 IPerfCounter(将来可能改名为 IQPerfCounter ) 接口,与以前的相比,这个接口多了一个名为 MarkEscape 的函数,用于记录两次记录之间的时间间隔,以便进行性能计数。 第一步:声明一个用于统计性能的变量,并为其初始化

[教程]使用泛型为 Delphi 提供一个位运算的模板支持

说起来,Delphi 自 2009 引和泛型已经很长时间了,而 Delphi 缺少位域也已经更久远了,早在远古之前……,扯远了:) 新版的 Delphi 提供了一个类,名字叫 TBits,好吧,顾名思意,可是为什么是类呀?这意味着我们没法像C++一样将它嵌入到结构体里,如果你能,你就上天了@ 好吧,为了实现这一目的,本