Delphi

Delphi,是美国 Borland(宝兰)公司於 1995 年开发在 Windows 平台下的快速应用程式开发工具 (Rapid Application Development,简称 RAD),它的前身是在 DOS 下的产品 Borland Turbo Pascal。(非开源软件)

从产品名称上就可以知道,Turbo Pascal 使用的是 Pascal 语言。 从 Turbo Pascal 5.5 版本开始,Borland 公司在传统 Pascal 的基础上加入了物件導向的功能。

Delphi 是一个集成开发环境(IDE),使用的核心是由传统 Pascal 语言发展而来的 Object Pascal 语言,通过图形用户界面(Graphical User Interface,简称 GUI)作为开发环境,透過 IDE 與 VCL 工具與編譯器,配合連結資料庫的功能,作成一個以面向对象设计為中心的開發工具。Delphi 程式撰寫後所編譯的執行檔,可以獨立執行,容量較大些,但效能上卻比較快,除了使用資料庫的程式外不需安裝即可執行,使用上相當方便。

它在本质上是一个代码编辑器而不是一种语言,但是由于 Delphi 是几乎是目前市场上唯一一个使用 Pascal 语言並持續推出新版的产品,因此有的 时候人们称呼 Delphi 为 Object Pascal 的代名词。因此 Borland 公司已经把 Object Pascal 语言改称为 Delphi 语言。2006,Borland 把开发工具产品线独立出来,成立了一家新的公司 CodeGear 负责。原本的 Delphi 一度被命名位 Turbo Delphi。但是在新的版本中,除了 Delphi for Win32(原有的 Delphi 版本)之外,还有一个新的产品被命名为 Delphi for PHP。因此,在目前的 CodeGear 的发展规划中,或许 “Delphi” 这个名称不再是 ObjectPascal 语言的专有 IDE,而是将被扩展为一 个通用的 IDE 名称。

Delphi 1、2 版本基本沿用了 DOS 时代下由 Anders Hejlsberg 使用汇编语言编写的 Turbo Pascal 编译器(由於品质良好,於是几乎没有工程师随意改动这些程序码)。
从 Delphi 3 开始 Danny Thorpe 修 改了 Delphi 的编译器,接支持 COM 接口的引用计数值(Reference Count)的维护工作,以免除开发者繁杂的程序代码。同时 Danny 也在 Object Pascal 程序语言本身中加入接口(Interface)的机制,让 Object Pascal 和 Java 一样对接口程序设计都提供 First Class 的支持。Delphi 1/2 中 Object Pascal 变化的部分很少,但是从 Delphi 3 之后,每一新版的 Delphi 在 Object Pascal 程序语言本身都有进步。

与同时代的产品相比,它最大的优势就是不但提高了编程效率,而且在提高编译速度的同时也保证了生成的机器码的高效。

每一种开发工具仅仅有语言是不够的,还需要一个完备的函数库/类库。Delphi 使用的类库是 VCL(Visual Component Library)。同 MFC 、OWL 一样, VCL 也是一个开发框架(Framework),采用了面向对象技术对 Windows 的开发进行了封装,使用 PME(Property/Method/Event)的开发模式,极大的提高了开发效率。

在 Delphi 7 之後支援 Linux 下使用对应的 Kylix, 目前 Kylix 的最新版本为 3。Borland 公司为了支持 Delphi 的跨平台开发,从 Delphi 6.0 开始加入了另外一个开发框架 CLX。开发人员可以使用 CLX 框架开发出可以在 Kylix 中编译的程序。但是從 Delphi 8 開始,Delphi 的後續版本中並不再提供對 CLX 的支援。

2003 年推出的 Delphi 从 8.0 版本开始正式支持微软公司的.NET 平 台。Delphi9 via Delphi 2005 将 Delphi 包容在一个 IDE 环境中(同时也支持 C#)。由於提供了.Net Framework 的 CLR,因此可以使用 Delphi 的程式碼編譯成和.NET 相同的執行碼,也可使用.NET 的各項 Library,程式設計上更有彈 性。

應用程式開發團隊每位成員不見得用同一套開發工具,因此 Delphi 支援 COM/DCOM 與 CORBA,可供 Delphi 設計人員使用 Visual C++、Visual BASIC 的 ActiveX 元件,或使用 DCOM、CORBA 的功能讓 JAVA 應用程式取用其共享功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/22104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【二叉树】Leetcode 103. 二叉树的锯齿形层序遍历【中等】

二叉树的锯齿形层序遍历 给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 示例 1: 输入:roo…

Kimichat使用案例007:用kimichat批量重命名txt文本文件

文章目录 一、介绍二、txt文件集三、Kimi操作内容四、Kimi输出内容一、介绍 一个文件夹中有很多个txt文本文件,需要全部进行重命名。 二、txt文件集 三、Kimi操作内容 可以在kimichat中输入提示词: 你是一个Python编程专家,要完成一个关于批量重命名txt文本文件的Python脚本…

产品经理的需求善变,利用规则引擎减少80%的需求变更成本

经常有技术团队的小伙伴抱怨最烦的就是产品经理发起需求变更,才做了三周,改了八回需求...... 其实这个故事,每天都在开发团队中上演,作为 IT的 leader 来透视这个问题,要辩证的看待,其实80% 的可能性都是如…

《对马岛之魂:导演剪辑版》新鲜出炉,AOC电竞显示器与你并肩作战!

超越PS版本的画面表现,AOC U27G3XM助你轻松拉满游戏体验! 近日,《对马岛之魂:导演剪辑版》正式登陆PC平台。这款备受期待的作品不仅在战斗机制和故事内容上进行了创新,还引入了更高级的图形选项和更丰富的自定义设置。…

我的创作纪念日-成为CSDN创作者的 第4096天

机缘 在我成为创作者的旅程中,有几个关键的机缘让我开始了这个旅程: 1、实战项目中的经验分享: 在参与各种实战项目的过程中,我积累了大量的经验和知识。意识到这些经验对其他人可能也有帮助,我开始将它们记录下来&…

SwiftUI中的AnyLayout的理解与使用以及自定义Layout

AnyLayout是SwiftUI中的一个类型擦除容器,它可以包装任何遵循Layout协议的布局。这意味着我们可以使用AnyLayout来抽象具体的布局类型,从而在运行时决定使用哪种布局。这种灵活性极大地增强了UI组件的可重用性和适应性。 AnyLayout可以在保持视图identi…

Android 绑定服务的5个问题。

1.android studio 目录结构改变了。为什么会报R 资源文件找不到。 在写项目的时候经常需要改到。 gradle文件里的域名名字要改变下。 2.Caused by: android.app.BackgroundServiceStartNotAllowedException: Not allowed to start service Intent { cmpcom.zjtzsw.sbkDevice/…

oracle 数字或者小数格式化

select trim(. from to_char(1,fm9999990.9999)),trim(. from to_char(0.1,fm9999990.9999)) from dual

视觉SLAM十四讲:从理论到实践(Chapter8:视觉里程计2)

前言 学习笔记,仅供学习,不做商用,如有侵权,联系我删除即可 一、目标 1.理解光流法跟踪特征点的原理。 2.理解直接法是如何估计相机位姿的。 3.实现多层直接法的计算。 特征点法存在缺陷: 二、光流(Optical Flow) …

【Qt知识】Qt中的对象树是什么?

在深入Qt编程的世界时,你会频繁遇到一个核心概念——对象树(Object Tree)。这个概念是Qt框架管理内存、处理事件和组织用户界面元素的基础。 什么是Qt对象树? 如果你的Qt应用程序就像一片茂盛的森林,而这片森林中的每…

multisim仿真电路图

在Multisim中进行电路仿真时,创建和配置电路图通常涉及一系列步骤。以下是创建和配置 Multisim仿真电路图的详细步骤,以确保格式清晰并充分参考了相关文章中的信息: 1. 创建电路图 打开Multisim软件。 选择“新建电路图文件”或使用快捷键Ctrl+N。 在新建的电路文件中,…

C++学习笔记(22)——多态

目录 [TOC](目录) 比喻与理解1. 多态的概念2. 多态的定义及实现2.1多态的构成条件2.2 虚函数2.3虚函数的重写2.3.1 虚函数重写的两个例外:1. 协变(基类与派生类虚函数返回值类型不同)2. 析构函数的重写(基类与派生类析构函数的名字不同) 2.4 C11 override 和 final2…

如何保证每次画出的都同一张人脸?AI绘画Stable Diffusion的Reference only教程

Ai绘画有一个很现实的问题,要保证每次画出的都是同一个人物的话,很费劲。 Midjourney就不必说了,人物的高度一致性一直得不到很好的解决。而在Stable Diffusion(SD)中,常用办法是通过同一个Seed值&#xf…

【Python Cookbook】S01E16 同时对数据做转换和换算

目录 问题解决方案讨论 问题 当换算(sum(), min(), max())同时遇到转换或筛选,怎么做? 解决方案 有一种非常优雅的方法,可以将数据换算和转换结合在一起——在函数参数中使用 生成器表达式。 一个直观的案例&#…

ATA-7030高压放大器应用分享:铁电体和压电材料

经过多年研究探索,Aigtek安泰电子功率放大器目前已拥有一众完善的系列功放产品,可为超声测试、生物医疗、水声测试、压电驱动、电磁驱动、MEMS测试等众多研究项目提供系统性的行业测试方案,其中对于压电极化测试、铁电极化测试,Ai…

GPT-4o:人工智能新纪元的突破与展望

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

介绍 Vue 的常用模板语法,如插值、指令、事件处理、条件渲染、列表渲染

Vue 的模板语法包含以下常用的语法元素: 1:插值: 使用 {{ }} 语法在模板中插入动态数据,如 {{ message }}。 也可以使用 v-text 指令来设置元素的文本内容。 2:指令: 指令是带有 v- 前缀的特殊属性,用于在模板中添加动态行为。 常见指令包括: v-if/v-e…

香橙派AI Pro开箱初体验

一、前言 上周很荣幸在CSDN上收到香橙派的测评邀请,这是一款专为边缘计算和嵌入式AI应用设计的高性能计算平台。因为之前一直做的是GPU Tensorrt部署相关工作,对边缘计算平台也不是很熟悉,花了一些时间摸索,今天我就简单与大家分…

npm发布自己的组件组件/插件包

前言 在项目开发过程中,我们经常会用到一些工具函数。虽然像lodash这样的库提供了丰富的功能,但其体积较大,有时我们更倾向于使用自己封装的轻量函数库。这篇博客将以创建并发布一个工具函数库为例,详细介绍如何在npm上发布自己的…

动态二维码与静态二维码,有何区别,如何使用?

近年来,二维码势不可挡席卷而来,并在我们的生活中占据了一席之地,付款、加好友、点餐、活动签到、电子门票、商品信息查询、分享内容等等,哪都有它。 二维码诞生于日本,就是用特定几何图形,按规律在平面上分…