GVKun编程网logo

用DELPHI的RTTI实现数据集的简单对象化(zt)(delphi tlist详解)

11

在本文中,我们将给您介绍关于用DELPHI的RTTI实现数据集的简单对象化(zt)的详细内容,并且为您解答delphitlist详解的相关问题,此外,我们还将为您提供关于2020年使用Delphi的2

在本文中,我们将给您介绍关于用DELPHI的RTTI实现数据集的简单对象化(zt)的详细内容,并且为您解答delphi tlist详解的相关问题,此外,我们还将为您提供关于2020年使用Delphi的25个理由(我觉得四个优点:控件+可视化开发+跨平台+数据库,还有一个编译快,运行快)——人生苦短,我用Delphi!、delphi RTTI的主要函数和应用示例、Delphi TADOQuery中数据集的列数(字段数)、delphi – UnitTesting一个返回复杂数据集的类的知识。

本文目录一览:

用DELPHI的RTTI实现数据集的简单对象化(zt)(delphi tlist详解)

用DELPHI的RTTI实现数据集的简单对象化(zt)(delphi tlist详解)

总结

以上是小编为你收集整理的用DELPHI的RTTI实现数据集的简单对象化(zt)全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

2020年使用Delphi的25个理由(我觉得四个优点:控件+可视化开发+跨平台+数据库,还有一个编译快,运行快)——人生苦短,我用Delphi!

2020年使用Delphi的25个理由(我觉得四个优点:控件+可视化开发+跨平台+数据库,还有一个编译快,运行快)——人生苦短,我用Delphi!

25年后从10个使用Delphi的理由到1个至25个使用Delphi 10.3的理由


25年前发布Delphi 1时,我汇总了使用Delphi的十大理由。这是我精通Delphi原始书的序言中的原始列表:

“可以使用许多编程环境,但是Delphi之所以出色,有很多原因。以下是我以相反顺序使用Delphi的十大理由:

  • 10.以前的Borland Pascal和C++编译器
  • 9.第三方组件和工具
  • 8.编辑器,调试器,浏览器和其他工具
  • 7.库源代码的可用性
  • 6.基于表单和面向对象的方法
  • 5.快速编译器
  • 4.数据库支持
  • 3.与Windows编程紧密集成
  • 2.Delphi的组件技术
  • 1.对象Pascal语言”

现在,经过了这么多年,什么会成为前十名,或者更好的“使用Delphi的25大理由”列表?这次,我不会以任何顺序对它们进行排序,并保留所有仍适用的内容(提示,全部!):

  • 1. Object Pascal语言
  • 2. 丰富的第三方组件和工具生态系统
  • 3. IDE本身,以及编辑器,调试器和其他工具
  • 4. 库源代码的可用性
  • 5. VCL仍然是本机Windows开发的最佳组件库,迄今为止,它在25年内更加稳定,并且包含所有Windows API,包括COM和WinRT。
  • 6. FireMonkey库具有为在台式机和移动平台上运行的应用程序的UI编写单一源代码的能力,并涵盖5个操作系统
  • 7. 基于表单和面向对象的方法,以及混合纯编码和可视化设计的能力
  • 8. 快速编译器,或者更好的许多快速编译器
  • 9. 针对Intel 32,Intel 64,Arm 32和Arm 64的10种本机编译器的可用性,适用于iOS(2 + 1),Android(2),macOS(2),Windows(2)和Linux(1)
  • 10.广泛的数据库支持,以及强大而全面的FireDAC库
  • 11.与Windows编程及其API的紧密集成
  • 12.能够在所有平台,台式机和移动设备上调用API
  • 13.Delphi的组件技术及其核心RTL库,从其形式和组件流机制开始
  • 14.得益于WebBroker,Indy,DataSnap,WebSnap,SOAP,BaaS客户端,云客户端,HTTP客户端库,REST客户端库和许多第三方选项,对Internet技术的深入支持
  • 15.FireMonkey设计器具有设备视图和设备上的实时预览
  • 16.现代语言扩展,例如泛型,匿名方法,属性和反射
  • 17.一个由活跃的开发人员,MVP和合作伙伴组成的社区
  • 18.与源代码的独特兼容性,使产品的旧版本(包括旧版本)与旧版本兼容,从而保留了数十亿行Delphi源代码开发人员编写的代码中的投资
  • 19.多年来,在Delphi中为所有行业和所有纬度构建了一些真正令人难以置信的应用程序,以及使用该产品的公司取得的令人难以置信的成功故事
  • 20.为所有平台编写自定义组件的能力
  • 21.使用新的组件和属性编辑器,向导等扩展IDE的能力
  • 22. RAD Server多层插件体系结构
  • 23. Visual LiveBindings体系结构
  • 24.动作和动作管理器体系结构
  • 25.用Delphi编码的乐趣;-)

在过去的25年中,使用Delphi一直是很棒的经验。Delphi 1很棒,Delphi 10.3.3是令人印象深刻的产品。德尔福万岁!

http://blog.marcocantu.com/blog/2020-february-25-reasons-delphi.html

delphi RTTI的主要函数和应用示例

delphi RTTI的主要函数和应用示例

总结

以上是小编为你收集整理的delphi RTTI的主要函数和应用示例全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

Delphi TADOQuery中数据集的列数(字段数)

Delphi TADOQuery中数据集的列数(字段数)

总结

以上是小编为你收集整理的Delphi TADOQuery中数据集的列数(字段数)全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

delphi – UnitTesting一个返回复杂数据集的类

delphi – UnitTesting一个返回复杂数据集的类

经过几个月的挫折和在先前开发人员的巫毒娃娃中插入针头所花费的时间后,我决定尝试重构遗留代码.

我已订购Micheal Feather’s book,我已进入Fowler’s refactoring,我用DUnit制作了一些示例项目.

所以即使我不掌握这个主题,我觉得是时候采取行动并将一些想法付诸实践.

我工作的代码几乎100%都包含在UI中的业务逻辑,而且所有都是过程式编程(除了少数例外).该应用程序以快速和快速开始肮脏的,继续这样.

现在为我的所有应用程序编写测试都是毫无意义的任务,但我想尝试对需要重构的东西进行单元测试.

一个大的“TForm业务逻辑类”的复杂任务之一是读取DB数据,进行一些计算并填充调度程序组件.我想删除读取数据库数据和计算部分,并将此任务分配给新类.当然这是一种改进当前设计的方法,它不是从头开始的最佳方式,但我想这样做是因为这个新类返回的数据在其他方面也很有用,例如现在我已被要求发送调度数据的电子邮件通知.

因此,为了避免大规模的复制和粘贴操作,我需要新的类.

现在,调度程序是从一个巨大的数据集(大小和字段数量)填充的,可能第一个重构步骤可能是从新类中获取数据集.但是在将来我最好使用一个新类(比如TSchedulerData或其他一些不太受调度程序限制的名称)来管理数据,而不是将数据集作为结果我可以拥有一个TSchedulerData对象.

由于重构发生在小步骤并且需要测试以更好地重构我对如何继续进行有点困惑.

我不清楚以下几点:

1)如何测试复杂的数据集?我应该运行工作应用程序,将一个结果集保存到xml,并编写一个测试,我使用包含该xml数据的TClientDataSet吗?

2)我需要多少关心TSchedulerData?我的意思是我不是100%肯定我会使用TSchedulerData,可能我会坚持使用数据集,无论如何想要创建将在2周内丢弃的复杂测试对于DUnitNewbee并不吸引人.无论如何,这可能是它的工作原理.我无法想象没有测试我会遇到的错误数量.

最后说明:我知道有人认为从头开始重写是一个更好的选择,但这不是一个选择. “该应用程序非常庞大,今天已售出,今天需要新功能才能停止运营”.这就是我被告知的,无论如何,重构可以挽救我的生命并延长应用程序的使用寿命.

解决方法

您最终的目标是将UI,数据存储和业务逻辑分离为不同的层.

使用自动测试框架测试UI非常困难.您最终希望尽可能多地将业务逻辑与UI分开.这可以使用各种模型/视图/ *模式之一来完成.我更喜欢MVP被动视图,它试图使UI只不过是一个界面.如果您正在使用数据集MVP监督控制器可能更适合.

数据存储需要有自己的测试套件,但这些测试与单元测试不同(尽管您可以使用相同的单元测试框架),但通常较少.你可以侥幸成功,因为大部分繁重的工作都是由第三方数据组件和dbms(在你的情况下为T * Dataset)完成的.这些是集成测试.基本上确保您的代码与供应商的代码一致.如果您在DB中定义了任何存储过程,也需要.它们比单元测试慢得多,并且不需要经常运行.

业务逻辑是您最想测试的.每个计算,循环或分支应至少有一个测试(更多是更好的).在遗留代码中,此逻辑通常直接触及UI和db,并在单个函数中执行多项操作.这里Extract Method是你的朋友.提取方法的好地方是:

for I:=0 to List.Count - 1 do
begin
  //HERE
end;

if /*HERE if its a complex condition*/ then
begin
  //HERE
end
else
begin
  //HERE
end

Answer := Var1 / Var2 + Var1 * Var3; //HERE

当您遇到其中一个提取点时

>确定您希望新方法的方法签名是什么样的:方法名称,参数,返回值.
>编写一个调用它的测试并检查预期结果.
>提取方法.

如果一切顺利,您将获得一个新提取的方法,至少有一个通过单元测试.

Delphi内置的Extract Method不会给你任何调整签名的方法,所以如果这是你自己的选择,你必须在提取后做并修复它.您还需要公开新方法,以便测试可以访问它.有些人不愿公开私人公用事业方法,但在这个早期阶段你别无选择.一旦你取得了足够的进展,你就会开始看到你提取的一些实用方法属于他们自己的类(在这种情况下,他们必须公开),而其他方法可以被私有/保护并间接测试通过测试依赖于它们的方法.

随着测试套件的增长,您需要在每次更改后运行它们,以确保您的最新更改不会破坏其他地方.

这个主题太大了,无法完全覆盖答案.你会发现,当这本书到来时,你的绝大多数问题都会被涵盖.

我们今天的关于用DELPHI的RTTI实现数据集的简单对象化(zt)delphi tlist详解的分享就到这里,谢谢您的阅读,如果想了解更多关于2020年使用Delphi的25个理由(我觉得四个优点:控件+可视化开发+跨平台+数据库,还有一个编译快,运行快)——人生苦短,我用Delphi!、delphi RTTI的主要函数和应用示例、Delphi TADOQuery中数据集的列数(字段数)、delphi – UnitTesting一个返回复杂数据集的类的相关信息,可以在本站进行搜索。

本文标签: