1、使用 raw 还是 qcow2 的问题:如果不考虑快照的问题,raw 性能更好。如果你对快照啥的很关心,就需要选择 qcow2。 2、客户机驱动:优先使用 virt-io,但显卡目前如果客户机操作系统是 Windows,只能选择 qxl (驱动暂时不支持)。驱动下载地址(使用迅雷下载,国外网址,下载速度慢):官方最
分类: 教程
[Bug] Delphi System.Net.HttpClient.Win 单元的一处Bug
[问题函数]System.Net.HttpClient.Win.ReadHeader[影响版本]自有这个单元开始到10.4,包括打完最新的 patch3。[问题描述]WinHttpQueryHeaders 返回 LSize 如果等于 2,则 SetLength 得到的结果是将 Result 设置对应的字符串缓冲区被设置
[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 请求。 举个例子:我们要获取 http://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 的函数,用于记录两次记录之间的时间间隔,以便进行性能计数。 第一步:声明一个用于统计性能的变量,并为其初始化
[QMathExpr]为 QJson 增加 QMathExpr 支持
QMathExpr 可以方便的实现表达式的计算,将它与 QJson 结合在一起,就可以对内容进行加工处理,为程序的实现提供更大的灵活性。同样的,你可以同样将 QXML/QMsgPack 一样封装下,为其加上 QMathExpr 的支持。 调用示例:
[教程]使用泛型为 Delphi 提供一个位运算的模板支持
说起来,Delphi 自 2009 引和泛型已经很长时间了,而 Delphi 缺少位域也已经更久远了,早在远古之前……,扯远了:) 新版的 Delphi 提供了一个类,名字叫 TBits,好吧,顾名思意,可是为什么是类呀?这意味着我们没法像C++一样将它嵌入到结构体里,如果你能,你就上天了@ 好吧,为了实现这一目的,本
[教程]Delphi 10.3 新特性:内联变量
简译自 Macro 技术博客 简单一句话:Delphi 终于不用非将变量定义在函数的开头位置了。 拓展开来: 1、您可以在代码中使用变量时,通过下面的格式来定义变量: var 变量名[:变量类型][:=变量值] 示例一: procedure Test; begin var I, J: Integer; I := 22;
[教程]QAnimation 使用教程之一:为 TPageControl 切换加入动画效果
首先,VCL 的 TPageControl 是没有切入切出动画的,所以,这里要做的是给 VCL 的 TPageControl 做动画支持。当然,虽然咱们说的是 QAnimation 教程,但关注的重点不是 QAnimation,而是如何给 TPageControl 添加动画效果,QAnimation 只是一个动画控制器
【教程】delphi 中如何访问另一个类中到私有成员方法 N 合 1
此文是参考 原文链接 和群友及作者自己曾经用过的方法简单总结,感谢群内的朋友和原文作者。另外,此文中所谓的访问另一个类的私有成员,另一个类并不在同一单元,在同一单元内的私有成员 Delphi 也是可以直接访问的,不需要绕圈子。 1、最易用的方法:class helper + with self 创建一个对应类的 cl
[教程] Resource XXX not found 的解决办法
一查路径:查看程序的搜索和库文件路径中是否有重名的文件,如果资源在这些重名的文件中,链接时如果错误链接到了老版本,就有可能造成此问题。 二看定义:在 Delphi 中,如果 DFM 定义和 Pas 对应的文件不完全匹配(比如界面上有的控件,但 pas 中由于某些原因被删除了),编译时并不会提示什么问题,但实际链接到程序
[教程]判断两个不同的接口实例是否是同一个对象
如果一个对象支持多个接口,当我们获取其支持的不同接口的实例时,就会得到不同的地址,比如: type IA=interface [‘{CB36F22E-E44C-4842-8198-7487806A3617}’] … end; IB=interface [‘{06949AE4-97F9-48C9-9E47-21E29