[QDB] 幽灵分享:QDataSet+TQMSSQLConverter 实战技巧

【注】本文由网友 幽灵 分享,由 swish 整理并重新编辑。 1、将A数据库A表的部分数据导入 B数据库B表中 【应用场景】 经常需要将A表的部分数据导入到B库的A表中,以前用循环插入 或是用数据库本身的导入导出,比较耗时,操作麻烦。 【原始做法】 循环插入 AdoQueryM.sql.text:=’select *

[QDB] 使用 TQConverter 直接将数据流从一种格式转换为另一种格式

TQConverter 新增了SaveToConverter / LoadFromConverter 方法来简化数据流格式的转换,支持从流中和文件中转换数据格式后保存到另一个流或文件中。 下面的示例代码演示了: 将当前 FDataSet 数据集的内容使用 TQBinaryConverter 来保存到 ASourceSt

[教程] QLang 快速入门指南:多语言支持的高级功能

虽然,说是高级编程,但实际上依然没有多少需要你自己做的事情。在前言部分,我们说过,QLang 支持资源字符串、常量和组件的非空字符串属性的翻译支持。至于资源字符串怎么加入的问题,咱在这里不再缀述,参考 Delphi/C++ Builder 帮助中关于 resource strings 的说明。 【常量字符串】 现在我们

[教程] QLang 快速入门指南:为程序添加多语言支持

QLang 的目标是尽量简化用户的编程,所以要让你的程序支持多语言,我们也尽量简化您所需要进行的操作。 由于 QLang 支持 Delphi 和 C++ Builder,所以我们分开来说(实际上两者真的差不多)。 【Delphi】 打开工程选项菜单,在工程的搜索目录中,加入 QLang 的搜索目录。 在你程序的任意一个

[教程] QLang 快速入门指南:前言

QLang 是一个 Delphi / C++ Builder 下的多语言编程的支持组件,目的是方便您将自己的程序走出国门,面向国际用户提供优质的软件产品时,不需要为程序适应不同的语言而大费脑筋。 在使用 QLang 之前,您需要知道: 它支持 Delphi / C++ Builder 2007 以后的版本的开发工具;

[QLang] 如何让你的程序支持多语言

QLang 的多语言支持使用起来一如既往的简单。要使你的程序支持多语言,你认为需要几个步骤?只需要一个:在你的项目中加入对 qlang 的引用。真的没了吗?没了,你的程序现在已经支持多语言,剩下的事情就是生成语言字典并翻译的问题了。 第一步:生成需要翻译的字典项目; 目前版本的QLang还没有完全自动化的多语言字典生成

[教程]基于 QWorker 的多线程编程 – 计划任务

如果前面的各种设置无法满足你的要求,你可能需要的是计划任务。QWorker 支持 Linux 的 Cron 计划任务配置文件格式,可以直接调用 Plan 函数来传递格式字符串到程序中进行任务调度。 与普通的作业不同,计划的作业任务分辨率比较粗,与 Linux Cron 配置文件格式一样精确到分钟。 QWorker 支持

基于 QWorker 的多线程编程 – 附加选项

一般来说,我们不需要对 QWorker 中 Workers 这个包工头干涉太多,但如果你想干涉它的行为,QWorker 还是提供了一些额外的途径的。 1、控制工作者的数量 默认情况下, 包工头为了节省开支,会为雇佣的工人数量设置一个上限和下限。默认情况下,下限为2,上限为逻辑 CPU 核心数量×2 +1,也就是说,对于

基于 QWorker 的多线程编程 – 状态跟踪

当我们将一个作业的执行委托给 Workers 这个包工头以后,那么这个作业实际上就处于三种状态之一: 排队中:作业在队列中等待被调度执行 运行中:作业正在执行 已完成:作业已经执行完,此时作业及相关连的数据都已自动被释放 由于已经完成的作业会被释放掉,所以,实际上,我们能得到的状态只有排队中和运行中两种,第三种由于作业

基于 QWorker 的多线程编程 – For 并行

看到这个标题,你可能会感觉到疑惑:难道我们前面用 Post 或 TQJobGroup 提交的作业不是并行的吗?为什么又会冒出一个 For 并行? 首先,第一个问题的答案是:它们当然是并行的,但在特定的场合下,由于调度会引起一定的性能损失。 接下来,第二个问题的答案是:For 并行是在特定场合下的解决方案,它的目的是按指

基于 QWorker 的多线程编程 – 工作流控制

工作流(WorkFlow)是一个被炒了很久的东西,并出现了一些工作流引擎。那么,QWorker 是不是也能做一些这方面的工作呢?答案是显然的,QWorker 本身基于作业的特性,决定了它很适合完成一些普通的工作流管理任务。 工作流引擎实际上实现了两个部分的工作:流程的控制和作业的执行。工作流程的控制实际上可以分成顺序执

基于 QWorker 的多线程编程-使用分组作为业务处理队列

作业分组在 QWorker 中是一个重要的组成部分,它是对作业的一个二次封装,以方便上层应用进行调用。但也因为它的封装的特性,相对于直接管理可能会引入一些额外的开销,但与易用性相比,许多时候这点开销我们都忽略不计了。 在本节内容中,我们继续上一个话题,这个话题是由于根据群里广大群友实际遇到的问题,做的一个简单示例。 本

QWorker 技巧 – 多步作业中参数重复投寄

QWorker  中作业投递时,如果需要传递一个参数,但我们如果设置jdfFreeAsObject,那么显然单次作业完成后,相关的参数就会被释放,无法传递到下一个作业。那么这个时候,我们该怎么做呢? 本文提供了一个简单的办法来解决这一问题:用 QString 单元为您提供的 TQPtr 做智能指针封装,然后作业时使用

基于 QWorker 的多线程编程 – 作业分组

在前面的章节中,我们讨论了常见的简单作业类型的处理,这种作业如果有多步,我们就需要自己手动在作业中投递新的作业,那么我们有没有一种办法来简化这种操作呢?这就是我们接下来要讨论的内容。 作业分组在 QWorker 中使用 TQJobGroup 来管理,用于将一到多个作业给组合在一起当做一个对象来处理。这些作业有可能是串行

基于 QWorker 的多线程编程 – 状态机:信号与广播

前面我们讨论了定时作业(Post/Delay/At)和直接用 Post 来触发作业,也就是说,作业触发和执行之间是紧密耦合的。作业的触发者知道作业的响应者在那儿,要干什么,但如果我们要将作业的触发与执行分离,该怎么做呢?信号!QWorker 提供了信号机制来解决这一问题。 QWorker 中信号的作用就在于建立触发者和