Delphi

使用TkbmMWThreadList实现线程安全列表

允我心安 提交于 2020-05-08 23:06:01
早在2008年的2.90.00版本,作者就实现了TkbmMWThreadList,之后在kbmMW 4.40.00版本中,作者使用了Delphi的新特性,实现TkbmMWThreadList的泛型版本,用以实现线程安全的列表。要使用TkbmMWThreadList,首先要引用kbmMWGlobal单元。 然后我们来看看,如何用TkbmMWThreadList实现自己的列表来管理对象。 1.声明列表对象: FConnectionList:TkbmMWThreadList <TConnectionDataModule> ; 上面代码,用FConnectionList来管理TConnectionDataModule对象。 2.建立FConnectionList实例: FConnectionList := TkbmMWThreadList <TConnectionDataModule> . Create ; 3.向对象列表填加被管理的对象: procedure TMainDatamodule.AddConnection(AConnectionDataModule: TConnectionDataModule); var lst:TList <TConnectionDataModule> ; begin lst: = FConnectionList.BeginWrite; try lst

override overload reintroduce的区别(delphi)

。_饼干妹妹 提交于 2020-05-08 21:18:45
1、override overload reintroduce的中文叫法是什么? override:覆盖;overload:重载;Reintroduce:重定义 2、在子类中override或overload父类中的动态或虚拟方法后是否会改变父类中的相应方法? 不会 3、self是怎么回事,怎么使用? Self因为这这个对象本身,例如,在TForm1的OnCreate事件中写Self指的是TForm1实例化后的对象,如果TForm1上有一个TButton叫做Button1,那么OnButton1Click中写的Self也是TForm1实例化后的对象, 4、reintroduce与override overload有何区别,怎么使用? 在子孙类中要声明一个与祖先类中参数不同的方法的时候用Reintroduce, 但需要重新定义一个祖先类总的虚拟的或者动态的方法的时候,要用到Override;如果祖先类中的方法不是虚拟的或者动态的(定义的时候有virtual;就是虚拟的,有dynamic;就是动态的);那么是没有办法override的 至于Overload,一般适用于定义一组不同参数的函数,这些函数也可以不是Of Objects(中文该怎么说?)。 reintroduce引入是为了屏蔽父类的一个虚方法,而在子类中生成一个新的方法;overload是为了处理同名的方法有不同的参数而设计的

Delphi 面向对象编程 第二章

旧城冷巷雨未停 提交于 2020-05-08 19:40:54
类的声明是一种类型声明,在delphi中,类被当作一个类型来声明,语法为: type class_name = class (base_class) {field } {procedure and function } {property } end; 注意:1、类的声明可以在一个单元的interface或implement部分,但定义必须在implement下。 2、在不指明base_class 的情况下,默认是TObject。 3、数据成员必须在方法和属性之前。 数据(Field):在类中定义好的变量。 方法(procedure and function):类中封装的过程和函数,用于执行类的操作,反映的是行为而不是数据。 属性(property):访问对象数据的接口,即对类私有数据成员进行读写操作。 对象:类的实例化。一般使用构造函数create完成。基本语法: MyObject := TMyObject.Create(); 一个类中可以不止一种构造函数,delphi不自动调用,需要程序员自己调用。 类的操作符: 1、is :用于判定对象的类而不是对象本身。语法:class_variable is class_name; 2、as :把一个对象变量的类型转换成另一类的类型或者把一个接口变量转换成另一接口类型。class_variable as class_name.

Delphi 方法:overload、override、virtual、dynamic、abstract

故事扮演 提交于 2020-05-08 19:39:22
1、overload 在Pascal语法规则中,同一个UNIT里是不能存在两个同名的函数的,例如: function func(): Boolean; function func(const x: Char): Boolean; 这样是会出语法错误的,原因是因为标识符规则限制。但是问题出来了,如果我们需要几个功能相似但是参数不同的函数,那么根据标识符规则,我们就必须定义几个不同名,但是功能相同或相似的函数。 如,假设我需要一个函数,要实现返回参数一减去参数二后的值,那么我们就将这样定义函数: function SubInt(const Value1, Value2: Integer): Integer; functino SubReal(const Value1, Value2: Real): Real; function SubDouble(const Value1, Value2: Double): Double; implementation function SubInt(const Value1, Value2: Integer): Integer; begin Result:= Value1 - Value2; end; functino SubReal(const Value1, Value2: Real): Real; begin Result:= Value1 -

面试-虚方法与动态方法(Delphi)

冷暖自知 提交于 2020-05-08 16:51:42
相关资料: 内容摘自万一老师博客 https://www.cnblogs.com/fansizhe/p/12729750.html 方法来到类中, 以前的特点基本都在; 因为类一般是存在于一个继承链中, 所以就有了一些新的概念, 譬如: 继承、覆盖; 也有了很多新名称, 譬如: 静态方法、虚方法、动态方法、抽象方法、类方法、消息方法. 先从虚方法与动态方法开始吧 //下面的类中就定义了两个虚方法(virtual)、两个动态方法(dynamic) TMyClass = class procedure Proc1(x,y: Real); virtual ; function Fun1(x,y: Real): Real; virtual ; procedure Proc2(x,y: Real); dynamic ; function Fun2(x,y: Real): Real; dynamic ; end ; //定义成虚方法或动态方法, 就意味着在后来的子类中将要被覆盖(override), 也就是重写 TBass = class procedure Proc(x,y: Real); virtual ; function Fun(x,y: Real): Real; dynamic ; end ; TChild = class (TBass) procedure Proc(x,y:

C#开发奇技淫巧三:把dll放在不同的目录让你的程序更整洁

╄→гoц情女王★ 提交于 2020-05-08 08:23:59
原文: C#开发奇技淫巧三:把dll放在不同的目录让你的程序更整洁 系列文章 C#开发奇技淫巧一:调试windows系统服务 C#开发奇技淫巧二:根据dll文件加载C++或者Delphi插件 C#开发奇技淫巧三:把dll放在不同的目录让你的程序更整洁 程序目录的整理 想必C#的开发者都遇到过这个问题,引用的dll都放在根目录下,随着项目的日益增大,根目录下充满了各种各样的dll,非常的不美观。 如果能够把dll按照想要的目录来存放,那么系统就美观多了,以下是我常用的程序各文件的分布: 【3rdLibs】 NLog.dll Newtonsoft.Json.dll …… 【MyLibs】 【Resources】 【Images】 Excecutable.exe Excecuteble.exe.config 网上有很多的文章述说这个,比如使用Assembly.Load,但是没有说明在程序中怎么使用,也没有给出具体的代码。这里我结合自己多年的实践经验,再把整个流程和方法详细叙述一遍,以便各位看官有个具体的体会。 系统搜索dll的目录以及顺序 CLR解析一个程序集会在一个根目录内进行搜索,整个探索过程又称Probing,这个根目录很显然就是当前包含当前程序集的目录。 AppDomainSetup这个类存储着探索目录的信息,其成员包括: ApplicationBase 、

Delphi 10.3.3最新消息

冷暖自知 提交于 2020-05-07 15:26:41
有朋友说,已经开始内测,预计10月末发版,按最新的路线图,此版本支持iOS 13及Android 64位。 2019-11-18,今天,下载及注册机都来了,快下载安装,试用吧。 需要的话加入QQ群 209321818 ,到群文件中去下载。 注册机下载地址: https://pan.baidu.com/s/1CvZpI2f0EBVeBnAQcWf5Kg 提取码:lfji 官方原版下载地址: https://altd.embarcadero.com/download/radstudio/10.3/delphicbuilder10_3_3_7899_nt.iso 如何安装: 1.卸载旧的版本,我原来是10.3.2的版本,注意,卸载时不要删除注册表信息,如下图: 2.将iso文件加载进虚拟机,做为dvd用,我用的vm,进入vm,就能看到安装盘了。 3.运行setup.exe文件,一路next,直到需要输入注册码的界面 4.打开注册机,点生成按钮 5.返回第3步,退回,自动完成注册码的界面了 6.一路next直到finish界面,退出安装程序,完成安装 7.回到注册机,点patch,完成crack. 这样安装后,原来安装的控件等全部保留,不用重新安装! 有朋友问,这个版本更新了什么? 最主要的是增加了两个平台的支持:Android 64,macOS 64支持。(这也是为什么安装包变成7

Delphi 10.3.2来了!

ぐ巨炮叔叔 提交于 2020-05-07 15:20:12
昨晚,官方正式发布了Delphi 10.3.2,增加对Mac 64应用的开发,支持Linux桌面开发,这个是通过集成fmxlinux实现的,同时修正400个bug,编译器,102个ide,84个fmx等方面的,就照这个400个bug,也值得升级。 这是官方的下载地址: http://altd.embarcadero.com//download/radstudio/10.3/delphicbuilder10_3_2_496593b.iso 需要序列号的,可以到delphi多层开发交流群,QQ群号 209321818 去找。 这是更新说明地址: http://docwiki.embarcadero.com/RADStudio/Rio/en/10.3_Rio_-_Release_2 Bug fixed: http://docwiki.embarcadero.com/RADStudio/Rio/en/New_features_and_customer_reported_issues_fixed_in_RAD_Studio_10.3.2 这个版本与上周官方发布 10_3_2_496593 的版本,没有区别,对于已经安装的用户可以不用重装。 安装前,需要先卸载Delphi 10.3.1,然后就是正常的安装过程,非常顺利,现在差不多半小时就安装完成。 安装后,启动Delphi

Delphi发布了社区版及Delphi 10.3展望

心不动则不痛 提交于 2020-05-07 15:19:56
http://altd.embarcadero.com/download/radstudio/10.2/delphicbuilder10_2_3__93231.iso, 注册机在这里 注册号要自己去申请,免费一年,过期再去申请,集成自10.2.3发布来的所有补丁。发布说明在这里,很简单。 http://docwiki.embarcadero.com/RADStudio/Tokyo/en/10.2_Tokyo_-_Release_3 要我看,就是10.2.4,官方没这个计划,如果lsuper大侠做成安装版,那可爽了,可以扔了10.2.3. 这个社区版,免费使用,功能与企业版、专业版有精减,不过,利用第三方控件,如三层框架kbmMW,数据集驱动uniDAC,就可以按全功能使用。当然,如果你公司用,收入超5000美金,还要购买的,这对于开源社区或者学习者来说是好事,这时候推出这样的版本,说实话,有点晚了。晚归晚,出来总是好事,还是能增加开发人员,必境跨平台开发支持走这几年,还是有优势,一套代码,支持windows,Mac OS,iOS,Android,Linux,这可不是吹的,谁家的开发工具做到这一点,还没有。 这时候推出这个版本,还是让人觉得异样,为什么不在10.3的时候发布呢?难道10.3要难产,离上一版的发布快5个月了,可10.3还一点消息没有。转眼要进8月,按去年的惯例

Delphi 10.3.2最新消息

心不动则不痛 提交于 2020-05-07 15:19:35
官方已经发布消息,招内测人员了! https://www.barnsten.com/default/newsupdates/details?news_id=328 https://docs.google.com/forms/d/e/1FAIpQLSdap6VZ1nP8vk_npnRetCs-V3VbuCRewV7BL7ybvJF8aLTu7A/viewform QC上也有官方消息,即将发布10.3.2! 最近几天,官方开始清理bug: 今天,有人收到内测邮件了: 2019-5-24:官方发布了最新的路线图 2019-06-03:确切消息,已经进入beta2,依旧修正bug为主。基本定稿了! 2019-6-18:最新消息,beta3已经放出,估计是最后的版本了! 支持平台情况: 2019-06-26:最新消息,马上beta4了。同时官方博客宣布将集成fmxlinux,支持linux的可视开发。 https://community.idera.com/developer-tools/b/blog/posts/announcing-fmx-linux-bundling-with-delphi-and-rad-studio 现在平台支持多了一项: 7月7日,在beta5又发布beta6,离正式发布不远了。 2019-7-13 出了官方下载地址: http://altd