傻猫网络日志 Samool's blog - 二十年老博客 - delphi
type: channel
link: https://www.samool.com/tag/delphi/
items: WebView4Delphi
items: delphpi13 EdgeBrowser demo
items: Delphi13 SmartCore AI 组件包
items: DELPHI赋
items: 传奇的开始Delphi（下）含所有版本.iso
items: 传奇的开始Delphi（中）
items: 传奇的开始Delphi（上）
items: CnRSA算法实现说明与帮助
items: 【提问GPT】TADOConnection连接失败的问题
items: CnPack 密码算法库 For Delphi

WebView4Delphi
type: item
date: 2025-09-30T19:03:00+08:00
description: AI摘要 WebView4Delphi是一个开源项目，用于将基于Edge/Chromium的浏览器嵌入使用Delphi或Lazarus/FPC为Windows制作的应用程序中。它使用Microsoft Edge WebView2 Runtime和Microsoft.Web.WebView2 NuGet包将Web浏览器嵌入到VCL、FMX和LCL应用程序中。WebView4Delphi是TWebBrowser和TEdgeBrowser组件的替代品，是WebView2框架的完整实现，经常更新，并且还支持旧版本的Delphi。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); WebView4Delphi描述WebView4Delphi 是一个开源项目，由Salvador Díaz Fau创建，用于将基于 Edge/Chromium 的浏览器嵌入使用 Delphi 或 Lazarus/FPC 为 Windows 制作的应用程序中。WebView4Delphi 是 TWebBrowser 和 TEdgeBrowser 组件的替代品。它是 WebView2 框架的完整实现，经常更新，并且还支持旧版本的 Delphi。介绍WebView4Delphi 使用Microsoft Edge WebView2 Runtime和Microsoft.Web.WebView2 NuGet 包将 Web 浏览器嵌入到 VCL、FMX 和 LCL 应用程序中。WebView4Delphi 加载 NuGet 包中的 WebView2Loader.dll 库并实现 WebView2 文档中描述的所有接口。最新的 WebView4Delphi 版本使用 Microsoft.Web.WebView2 NuGet 包版本 1.0.3485.44。您可以自行下载以提取 WebView2Loader.dll 库，或使用存储库 bin32 和 bin64 目录中提供的副本。下图描述了 WebView4Delphi 的工作原理：链接WebView4Delphi项目：GitHub 存储库论坛从 GitHub 下载Microsoft Edge WebView2 运行时：GitHub 反馈存储库文档API 参考下载Microsoft.Web.WebView2 NuGet 包：NuGet 库Chromium项目：Chromium 项目Chromium 问题代码搜索命令行开关DevTools 协议文档Chromium 文档兼容性Microsoft Edge WebView2 Runtime 创建了一个基于 Chromium 的 Web 浏览器，需要 Windows 10、11 或更新版本才能运行。微软曾计划支持 MacOS 和 Linux，但他们决定停止这些计划。WebView2 仅适用于 Windows。如果您需要在 MacOS、Linux 和 Windows 中嵌入 Web 浏览器，请考虑使用CEF4Delphi。关于 WebView2 运行时WebView2 运行时可以安装在运行嵌入式浏览器的每台计算机上。这称为常绿版本，由 Windows 更新自动更新。或者，您可以部署 WebView2 运行时的固定版本，并在每次更新应用程序时手动更新它。常绿版本允许您为您的应用程序安装一个小型安装程序，并且 Windows 将使用最新的安全补丁更新 WebView2 运行时。嵌入式 Web 浏览器也将自动更新，这意味着您的应用程序应该定期进行测试，以防止因弃用的浏览器功能、内部浏览器问题等引起的问题。您还必须记住，并非所有计算机都会同时更新。一些企业用户可能会很晚才收到某些 Windows 更新，因此您的应用程序必须准备好与多个浏览器版本完美兼容。为了避免所有这些问题，您也可以使用 WebView2 Runtime 的固定版本，但随后您必须手动更新它以修补浏览器中的安全问题，并且安装程序会更大。Windows 11 和大多数 Windows 10 设备中已包含 Microsoft Edge WebView2 运行时的常绿版本。所有演示均配置为使用常绿版本。安装要在 Delphi XE2、XE3、XE4、XE6、XE7、XE8、10、11、12 或 13 中构建和安装 WebView4Delphi，您需要遵循以下步骤：从GitHub下载最新版本的 WebView4De…

delphpi13 EdgeBrowser demo
type: item
date: 2025-09-30T16:17:27+08:00
description: AI摘要 本文介绍了一个使用Delphi编写的示例应用程序，该程序展示了如何使用`TEdgeBrowser` VCL组件。`TEdgeBrowser`是`TWebBrowser`的替代品，它使用Edge浏览器的WebView2控件。使用`TEdgeBrowser`需要安装Edge浏览器和WebView2控件加载器DLL。文章还提供了`TEdgeBrowser`组件事件处理程序的示例，并附有WebView2的文档链接。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); EdgeBrowser demoThis sample Delphi application demonstrates the use of the TEdgeBrowser VCL component.TEdgeBrowser is a successor to TWebBrowser. Where TWebBrowser uses the Internet Explorer WebBrowser control as its browser UI, TEdgeBrowser uses Edge browser's WebView2 control. Because of this TEdgeBrowser relies on:the Edge browser being installedthe WebView2 control loader DLL being available (part of the Microsoft WebView2 SDK)Please see the documentation for TEdgeBrowser for full details on how to get it up and running with the Edge (Chromium) browser and the WebView2 browser controlThe sample includes event handlers for all of the TEdgeBrowser component's events and these mostly surface events of the WebView2 control itself.WebView2 documentation can be found at:https://docs.microsoft.com/en-us/microsoft-edge/hosting/webview2https://docs.microsoft.com/en-us/microsoft-edge/hosting/webview2/gettingstartedhttps://docs.microsoft.com/en-us/microsoft-edge/hosting/webview2/reference-webview2

Delphi13 SmartCore AI 组件包
type: item
date: 2025-09-30T13:25:58+08:00
description: AI摘要 RAD Studio 13.0引入了SmartCore AI组件包，旨在帮助客户将AI功能添加到现有应用程序中或构建新的AI为中心的应用程序。该组件包模块化，简化了从Delphi和C++Builder应用程序调用AI提供商的过程，并可通过重写虚拟方法或创建新的驱动程序组件来扩展驱动程序。它包括新的AI连接组件、AI请求组件，以及针对不同数据类型的组件，可以直接与UI控件绑定以显示结果。用户可以利用这些组件集成AI到应用程序中，解决多种AI用例，如内容创建、本地化支持、智能见解和数据分析等。安装后，用户可以通过连接向导编辑和测试参数，或手动配置参数。此外，还提供了多个演示指南，帮助用户快速入门和理解如何使用SmartCore AI组件包。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); SmartCore AI 组件包从 13.0 版开始，RAD Studio 继续在 IDE 中提供 AI 驱动的编码帮助，引入一组新的核心 AI 组件，旨在帮助客户将 AI 功能添加到其现有应用程序中，或使用 Delphi 或 C++Builder 构建全新的以 AI 为中心的应用程序。这是一个模块化组件套件，用于简化从 Delphi 和 C++Builder 应用程序调用 AI 提供商（OpenAI、Claude、Gemini、Ollama）。它将运行时单元（组件、驱动程序、类型、LiveBindings）与设计时单元（属性编辑器、连接向导、帮助程序）分开。可以通过重写虚拟方法或创建新的驱动程序组件来扩展驱动程序。注意： 要使用 SmartCore AI 组件包，特定 AI 服务（可通过免费或付费帐户获得）或引擎的本地安装（如果是 Ollama），需要API 密钥。一、概述SmartCore AI 组件功能是未来的构建块和基础。这是一个核心架构，我们的客户和第三方供应商可以在其基础上构建和扩展，以与其他 AI 引擎和 UI 控件集成。此套餐包括：新的 AI 连接组件（其角色类似于 FireDAC 中的数据库连接）。这是一个与 AI 引擎无关的组件，它使用特定的驱动程序通过 REST与不同的 AI 引擎（包括 OpenAI、Claude、Gemini 和 Ollama）进行通信。SmartCore AI引擎提供了添加额外驱动程序的能力，使 AI 提供商能够随着市场的发展扩展您的项目功能。配置通过易于使用的 AI 连接向导进行管理。一组针对不同数据类型（如文本、图像、结构化数据）的 AI 请求组件，这些组件可以与提示相关联，并且可以直接与 UI 控件绑定以显示结果。借助 SmartCore AI 组件包，用户可以将 AI 集成到现有和新应用程序中，解决许多流行的 AI 用例，例如为生成图像和其他媒体等产品内内容创建提供支持，为动态翻译添加产品内本地化支持，提供应用内智能见解和数据分析的个性化建议，或构建应用内聊天机器人以为现有应用程序添加交互性。二、安装和入门从 GetIt 下载 SmartCore AI 组件包以开始使用 AI 连接组件。RAD Studio 13.0 演示存储库中还提供了一组相关的演示。如果您已将演示与产品一起安装，则可以通过 git 获取更新。安装软件包后，请按照以下步骤开始：1、删除 TAIConnection、分配驱动程序和分配给请求组件。2、使用连接向导编辑和测试参数（双击 TAIConnection）。3、或者手动配置参数（API 密钥、模型、BaseURL 等）。以下是智能 AI 组件包安装的组件列表：三、组件和驱动程序快速参考以下是组件和驱动程序的列表。TAIConnection：拥有并连接混凝土 TAIDriver。驱动因素： TAIOpenAIDriverTAIClaudeDriverTAIGeminiDriverTAIOllamaDriver参数：每个驱动程序的强类型 （， ， ，TAIOpenAIParamsTAIClaudeParamsTAIGeminiParamsTAIOllamaParams)Endpoint_*：驱动程序发布具有正确默认值的提供程序特定终结点 （基于提供程序 API 引用） 。请求组件： TAIChatRequestTAIImageRequestTAIJSONRequestTAIStreamRequest四、注意事项和最佳实践以下部分列出了最佳实践…

DELPHI赋
type: item
date: 2025-04-22T06:03:45+08:00
description: AI摘要 本文是对Delphi编程语言的赞美和介绍。Delphi以其典雅、形象、传统和现代的特点，深受程序员喜爱。它具有清晰的结构、直观的语法、面向过程和面向对象的特性，以及强大的底层操作能力。Delphi适用于各种开发场景，对不同级别的程序员都有益处，提供丰富的控件、类库和源代码。作者认为Delphi是经典且优雅的编程语言，值得程序员学习和使用。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); DELPHI者，经典开发工具、美奂美仑之开发环境也。盖论DELPHI其身世，实为神界之神物，后借宝蓝公司之手，于1990年代，现于江湖。DELPHI一出江湖，码农爱之，企业爱之。一时间，风雨雷动，群雄为之叹服，奸商为之苦脸，微软为之微软。后江湖传说“真正码农用C++，聪明码农用DELPHI”。乃知DELPHI聪明犀利、优雅大方之美名，早已深入人心。一、倘论DELPHI之技法，实则冠盖江湖，其特点有四。其一曰典雅：一始（BEGIN）一终（END），尽显思路之清晰，描述之易懂，无VB之散漫，无C/C++之呆板。传值合理，调用高效，引无数人研究DELPHI，效仿DELPHI，山寨DELPHI。其二曰形象：编码惟虫（BUG）少，虫少惟清晰，清晰惟好懂，好懂惟形象。DELPHI语法之形象，剑尖一指（^）可抓其实，圆圈一画(@)可定其位，一招一式间，尽显功力之扎实，操作之形象。无C之费解，无C++之烧脑。其三曰传统：所谓传统者——面向过程时代之全局变量也。呜呼！世道不古，江湖新贵JAVA/C#之流早已丢弃此传统技艺矣！DELPHI则完整承传此技艺，其全局变量无繁文缛节（CLASS）之拘束。随性而为，方便直接，既写即用，可秒结、可妙结一切小型项目。其四曰现代：所谓现代者——面向对象时代之面向对象也。JAVASCRIPT之属有象无类，实则伪面向对象。DELPHI则有类有象，形神俱全。JAVA/C#之属有始无终，只能构造，不能析构，实则半调子面向对象。JAVA/C#之属生由我，死由他，全赖外部垃圾回收之人裁定。观此蹩脚之规定，可知JAVA/C#实为蔑视码农，低估码农智商，当码农为废物垃圾矣！DELPHI则有始有终，权力与担当同在。我有权，我亦有责，我构造，我析构，生死全由我。DELPHI实乃顶天立地之真男人也。二、倘论DELPHI用武之地，其地深矣！其地大矣！JAVA/C#之属乃隔靴（虚拟机）搔痒，带套作业，地址指针，一概不敢承认，全当幻觉。DELPHI则深入底层，直触OS，直面资源，直操API，DELPHI实为计算机之真主人也。于是乎——读写寄存器，操控硬件，无所不能。于是乎——读写DB，增删数据，无所不便。于是乎——读写网络，事件通知，完成端口，DIOCP，无所不利。于是乎——挖掘资源，利用资源，榨干资源，上万并发，十万并发，百万并发，全凭码农聪明发挥，DELPHI毫不含糊，不贪污不浪费，不打折扣。三、倘论习练DELPHI之益处，其益大矣！于初级习练者，DELPHI屏蔽其一切繁杂缘由。示之以海量快速控件，我想即我见，我见即我得，拖拖拉拉之间，开发任务已达成，令人喜不自胜，从业码农之心弥坚。于中级习练者，DELPHI屏蔽其一切复杂头绪。示之以璀璨之类库。璀璨之类库内含璀璨之美景，美奂美仑，不可胜收，时而康庄大道，时而曲径通幽，千回百转，一切奥妙尽藏其中。于高级习练者，DELPHI坦诚相见，露其峥嵘之真容。示之以源头之代码，应之以包容之协议，用框乎？用架乎？造轮乎？辗转乎？腾挪乎？全凭习练者之喜好，绝不削足适履，强买强卖，让人难受。曰若稽古，考察历史，可知计算机语言庞杂纷纭，流行甚多。然经典计算机语言，廖若晨星。其中经典而又优雅者，非DELPHI莫属。何谓经典？经者，经常也，常在也，永存也，典者，陈列也，典藏也，价值珍贵，足以值得珍藏也。DELPHI原本神界物， 神界DELPHI之神话，生生不息。何谓流行？流行者，时尚也，时尚者，此时之尚也。然此时之所尚，亦彼时之所尚乎？前时之所尚，亦后时之所尚乎？今之所尚，亦明之所尚乎？尚尚不一，尚尚不息，码农何为？故与其追流行，不如练经典；故与其临渊羡众语言，不如退而苦练DELPHI语言。经典之DELPHI，必成就经典之你我。DELPHI之经典，必成就你我之经典。愿天下码农和IT公司的事业，从经典的DELPHI开始！-----------------一个老码农的感言！文章来源：https:…

传奇的开始Delphi（下）含所有版本.iso
type: item
date: 2024-12-31T14:58:09+08:00
description: AI摘要 本文回顾了Delphi编程语言的发展历程，从1995年的首个版本到2023年的Delphi 12，每个版本都带来了新的功能和改进，以适应不断变化的技术趋势。文章还提供了Delphi所有版本的ISO下载链接和安装教程，以及如何编写第一个“Hello World!”程序的步骤。Delphi以其快速应用开发（RAD）环境而闻名，不断扩展支持的平台范围，并引入前沿技术。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); 概览Delphi 的最新版本，即 Delphi 12，勾勒出了自公司创立以来的一条进化之路。该平台不断通过提升开发者生产力、扩展其支持的平台范围以及引入前沿技术来实现自我完善。作为 Embarcadero 提供的主要快速应用开发（RAD）环境，Delphi 在多年间经历了广泛的发展与变革。Delphi 版本变迁围绕 Delphi 各个版本的故事，实际上是一系列转型的记录。它起始于 1995 年的 Borland Delphi，并以其视觉组件库（VCL）专注于 Windows 编程领域。2006 年，随着 CodeGear 接手，推出了面向 .NET 的 Delphi Prism，并开始强调跨平台功能的重要性。最终，在 2008 年被 Embarcadero 收购后，Delphi 通过 FireMonkey 增强了其跨平台能力。Delphi 版本主要变化自 1995 年推出以来，Delphi 作为快速应用开发的重要工具，经历了显著的变化。每个新版本都以前一个版本为基础进行了改进，引入了改变软件工程师设计应用程序方式的创新特性和功能。这些持续的演进不仅体现了对技术进步的承诺，也反映了 Delphi 不断适应并引领行业趋势的决心。所有 Delphi 版本Delphi 1 (1995) - 首个版本，由 Borland 发布，引入了可视化组件库（VCL），使得 Windows应用程序的开发变得直观和高效。Delphi 2 (1996) - 增强了对 Windows 95 的支持，并改进了编译器性能和 VCL。Delphi 3 (1997) - 引入了数据库应用开发的支持，包括一个全新的数据库引擎 BDE 和新的数据感知组件。Delphi 4 (1998) - 加强了与 COM 和 ActiveX 的集成，使开发者能够创建更复杂的 Windows 应用程序。Delphi 5 (1999) - 添加了 WebBroker 框架，允许开发者构建基于 Web 的应用程序和服务。Delphi 6 (2001) - 包含了一个 CLR 编译器，首次尝试兼容 Microsoft .NET 平台。Delphi 7 (2002) - 成为许多开发者心中经典的 Delphi 版本，它稳定且功能丰富，广泛用于 Windows 应用开发。Delphi 8 (2003) - 主要针对 .NET 开发，是第一个完全面向 .NET 的 Delphi 版本。Delphi 2005 (2004) - 提供了 Win32 和 .NET 支持，引入了 DbExpress技术，增强了数据库连接能力。Delphi 2006 (2005) - 继续扩展了对 .NET 和 Win32 平台的支持，增加了 CodeGear 的 Delphifor PHP。Delphi 2007 (2007) - 专注于 Win32 应用开发，改善了 IDE 性能并加入了更多新特性。Delphi 2009 (2008) - 第一次带来了 Unicode 支持，这是现代软件开发的重要需求之一。Delphi 2010 (2009) - 进一步完善了 Unicode 支持，同时增强了调试工具和其他开发工具。Delphi XE (2010) - Embarcadero 推出的新命名方案下的首个版本，强调跨平台开发能力。Delphi XE2 (2011) - 引入了 FireMonkey 框架，开启了 Delphi 跨平台开发的新篇章，支持 Mac OSX 和 64-bit Windows 应用开发。Delphi XE3 (2012) - 改进了 FireMonkey，并开始支持移动平台开发，如 iOS。Delphi XE4 (2013) - 继续增强移动开发支持，特别是 Android 平台。Delphi XE5 (2013) - 提升了移动开发的功能，特别是对 i…

传奇的开始Delphi（中）
type: item
date: 2024-12-31T14:52:24+08:00
description: AI摘要 本文回顾了Delphi编程语言的历史，从其发布会邀请函、95年软件开发大会、产品包装盒、相关书籍，到Delphi问世前的Turbo Pascal，以及Delphi的快速应用开发（RAD）理念和投资回报（ROI）。文章还提到了Delphi获得的奖项，特别是Jolt大奖，以及Delphi 2和Delphi 3的发布。最后，文章概述了Delphi从Delphi 4到Delphi 8的发展历程，包括技术进步和开发团队面临的挑战。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); 发布会这是 Delphi 发布的邀请：许多曾经风靡一时的开发工具已逐渐淡出人们的视野，被历史的洪流所淹没。然而，Delphi不仅没有被遗忘，反而持续保持着其独特的魅力和广泛的用户基础。这不仅彰显了Delphi在快速变化的技术领域中的持久生命力，也证明了它对于开发者而言不可替代的价值。Delphi之所以能够历久弥新，离不开其始终如一地关注于简化开发流程、提高工作效率以及不断适应新技术的能力。这种持久的吸引力和适应性，正是Delphi长久以来深受开发者喜爱的关键所在。有趣的是，Delphi自诞生之初便着眼于提升开发人员的生产力这一核心商业价值，而这一理念即便在今天依旧熠熠生辉。尽管技术环境、移动平台等各方面都经历了翻天覆地的变化，但Delphi原始广告中所传达的信息，却意外地与当今的需求高度契合，仿佛穿越时光仍能引起共鸣。在产品发布前后的岁月里，留存下来的一些珍贵图像资料，大多源自Borland当年发布的广告。这些图片不仅记录了那个时代的风貌，也见证了Borland如何通过其独特的市场推广策略，将创新的产品理念传递给全世界的开发者。95年软件开发大会该会议在加利福尼亚州旧金山的莫斯康中心举行。以下是会议的一些照片：这是展览大厅。请注意，微软当时正在大力推广Windows 95。同时也可以注意到，许多现在已不再营业的公司也曾在这里展出……原装产品包装盒最厚的Delphi 1.0三本书Mine、Charlie's以及Pacheco/Teixeira这三本书是覆盖Delphi各个方面的经典之作，它们从不同角度深入探讨了Delphi的精髓，并因此成为了该领域的经典书籍。每一本都经历了多个版本的迭代更新，以适应Delphi后续版本的发展，确保内容与时俱进。Delphi问世之前-Turbo Pascal在Delphi问世之前，Turbo Pascal早已是程序员们心中的一颗璀璨明星。Turbo Pascal不仅定义了Pascal语言的早期形态，还引入了一套独特的面向对象编程（OOP）模型，并初步实现了与Windows环境的集成。然而，随着Delphi的登场，这一切都迎来了革命性的变革。Borland曾经拥有的一本杂志Delphi来了！从Delphi的快速应用开发（RAD）到实现投资回报（ROI），这些理念在今天依然值得我们更多地借鉴与运用！ 正确的Visual Basic……实现了激进的性能突破……为Windows 95的到来做好了充分准备。借助Borland工具家族，软件开发变得更加简便高效。尽管当时的产品线较为精简——所有产品组合都能汇总在一页纸上描述——但其功能却毫不逊色，展现了强大的技术实力。来自杂志的关注Delphi的荣耀Delphi赢得了许多奖项，在Delphi 2发布时，这些荣誉得到了广泛的庆祝。特别是当《软件开发》杂志宣布Delphi获得Jolt大奖时，那句“Borland回来了”不仅标志着Borland公司的重新崛起，更象征着Delphi在行业内的地位与认可。这一奖项是对Delphi卓越性能和创新精神的最佳肯定。注：Jolt大奖是软件开发领域中极具影响力的奖项，旨在表彰那些给开发者带来震撼体验的技术产品。Delphi荣获此奖，证明了其在快速应用开发（RAD）工具中的领先地位。Delphi 2 和 Delphi 3Delphi 2 和 Delphi 3 将 Visual Basic 的易用性与 C++ 的强大功能完美结合，提供了既能在预算内准时交付项目，又能确保应用拥有高性能和强大功能的开发体验。Delphi 与鸭子：对未来事物的预想更多的版本在Delphi的发展历程中，更“近期”的版本涵盖了从Delphi 4到Delphi 8的一系列重要更新，期间不仅见证了技术的进步，也反映了开发团队面对的挑战与机遇。Delphi 4时期，…

传奇的开始Delphi（上）
type: item
date: 2024-12-31T14:45:00+08:00
description: AI摘要 Delphi是Borland公司在软件开发工具领域的重要产品，它的出现不仅为公司带来了新生，也引领了Windows平台上快速应用开发（RAD）的潮流。Delphi 1.0在1995年情人节发布，通过大规模的公共测试计划，确保了产品的质量和稳定性，迅速赢得了开发者社区的信任和支持。Delphi的成功也体现在其惊人的销量上，首个版本就售出了50多万套，几乎达到了Borland旗下另一款成功产品Turbo C/C++系列销量的一半。Delphi的核心开发者Anders Hejlsberg在产品中隐藏的彩蛋，也体现了开发者对这款工具的信心和浪漫情怀。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); "是Turbo Pascal诞生了Borland,但却是Object Pascal给予了 Borland 重生的机会!"创造传奇故事的主角---DelphiBorland依靠Pascal起家，通过C/C++绽放光芒，从C/C++领域的辉煌跌落谷底，又凭借着明星开发工具Delphi的问世重振旗鼓，这一过程充满了戏剧性和挑战。在这个过程中，Borland经历了两位关键人物——创始人Philippe Kahn和核心开发者Anders Hejlsberg——相继离职的重大转折点，这不仅标志着公司内部的剧变，也预示着Borland即将踏上转型之路。对于Borland而言，这段历史是其发展中的一个至关重要的里程碑。Delphi的出现不仅为公司注入了新的活力，也在软件开发工具领域掀起了革命性的变化。Delphi开启了Windows平台上的快速应用开发（RAD）的新纪元，改变了Windows平台上应用程序架构的设计思路，并对组件化技术的发展起到了不可忽视的推动作用。事实上，Delphi所倡导的组件技术理念至今仍然影响深远，无论是JavaBean还是.NET框架中的组件思想和技术实现，都可以看到Delphi当年创新的影子。空前的大规模公共测试计划在Borland全力推进C/C++产品线的最后决战之际，Delphi的研发也在紧锣密鼓地进行。1994年下半年，随着Delphi 1.0接近尾声，团队将注意力转向了至关重要的Beta测试阶段。这一年，Borland做出了一个前所未有的决定——为确保Delphi的质量和稳定性，避免重蹈C/C++产品线的覆辙，公司启动了一项大规模的公共测试计划。这项计划展示了Borland对Delphi的信心与决心：向全球程序员发出了成千上万份测试版本，邀请他们参与长期而深入的产品评估。此举不仅是为了收集尽可能多的反馈意见来优化软件，更是为了建立用户社区的信任和支持。这种规模的公开测试，在Borland的历史上是空前绝后的；自Delphi 1.0之后，再没有一款产品能够享受到如此广泛的测试覆盖和公众参与。一炮而红的Delphi 1.01995年2月14日的情人节似乎一夜之间改变了Borland的命运！1995年2月14日，这一天注定会被Borland铭记于心，因为这不仅是Delphi正式问世的时刻，更是Borland命运转折的关键节点。得益于此前大规模的Beta测试计划，Delphi在全球范围内已经吸引了广泛的关注与高度评价。信息业界对Borland的新产品寄予厚望，认为它不仅代表了软件开发工具的一次重大飞跃，更可能成为改变行业格局的重要力量。通过这场前所未有的公开测试，Borland成功地将Delphi推到了全球程序员的眼前，收集了大量的反馈和建议，使得这款产品在正式发布时已经具备了极高的稳定性和用户友好性。这种开放式的开发策略，不仅让Delphi成为了当时最受瞩目的编程环境之一，也巩固了Borland在快速发展的软件市场中的地位。集成开发环境IDE随着Delphi的成功推出，Borland向世界展示了其创新能力和对产品质量的不懈追求。这款集成了可视化设计、快速应用程序开发（RAD）特性的工具，迅速赢得了开发者社区的心，为公司开启了新的篇章。从那一天起，Delphi不仅仅是一款产品，它象征着Borland对于技术创新的承诺，以及对未来无限可能性的探索。Delphi 1.0的成功堪称软件史上的一个传奇。根据非正式统计，这款革命性的开发工具在全球范围内售出了惊人的50多万套——这是一个令人难以置信的成就。为了更好地理解这个数字的意义，我们可以将其与Borland旗下另一款极为成功的系列产品——Turbo…

CnRSA算法实现说明与帮助
type: item
date: 2024-12-31T12:01:58+08:00
description: AI摘要 CnRSA是CnPack开发包中的一部分，提供纯Delphi代码实现的RSA算法，支持所有版本的Delphi并兼容OpenSSL。RSA是一种非对称加密算法，使用不同的密钥进行加密和解密。CnRSA通过大整数运算、寻找大素数、蒙哥马利快速幂求余和扩展欧几里得辗转相除法等技术实现RSA算法，并提供加密解密、签名验签等功能。具体使用时，需要注意填充对齐、公私钥的传递保存加载等。CnRSA的使用示例和源码说明可在CnPack的官方资源中找到。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); CnPack For Delphi/C++Builder 中国人自己的免费第三方开发包 (C)Copyright 2001-2024 CnPack 开发组 CnRSA算法实现说明与帮助 Revision 1.0.1.0 ========================= 作者：刘啸 2024.11.02 ======================================================================CnRSA 介绍CnRSA 是 CnPack 开放源码组件包中的一部分，是以纯 Delphi 代码实现的工程可用的 RSA 算法，支持从 Delphi 5 到最新版的所有版本的 Delphi，并兼容 OpenSSL。为了给用户一个完整的使用说明以及使用户在发现问题时能通过阅读 CnRSA 的代码解决问题，这里将 RSA 的算法说明以及 CnRSA 相关实现机制整理如下文。======================================================================RSA 算法说明RSA 加密算法是由罗纳德·李维斯特（Ron Rivest）、阿迪·萨莫尔（Adi Shamir）和伦纳德·阿德曼（Leonard Adleman）在 1977 年共同提出的一种非对称加密算法，目前在公开密钥加密和电子商业中被广泛使用。RSA 即为该三人姓名的首字母。 所谓非对称加密算法，是指加密与解密时使用的密钥不相同，能够避免对称加密算法所面临的密钥传递时的泄露危险。2.1 如何以最简单的方式理解 RSA 加解密先以通俗的算法描述来了解 RSA 算法。 选俩素数，算它们的积（叫做积一）。算俩素数各减一的积（叫做积二）。找一个和积二互素的数 E，一般就选 65537（有时候 3 也行）再求个正数 D，要求 D 能满足 （D * 65537） mod 积二 = 1好了，我们得到了一对简单的 RSA 公私钥。其中公钥是积一和 65537，私钥是积一和 D。得到了公私钥如何加解密呢？也很简单：加密：原文数字的 65537 次方除以积一，余数就是密文解密：密文数字的 D 次方除以积一，余数就是明文2.1.1 不能实际使用的 RSA 例子一如果上面仍不好理解，我们可以拿一个数字非常小因而并不能投入实际使用的简单例子来说明： 素数：5、11积一：5 * 11 = 55积二：(5 - 1) * (11 - 1) = 40E：3D：D * 3 mod 40 = 1，求得D = 27我们得到公钥 55 和 3，私钥 55 和 27，假如我们的明文是 2，那么加密：2 的 27 次方除以 55 = 134217728 mod 55 = 18，密文为 18解密：18 的 3 次方除以 55 = 5832 mod 55 = 2，解出了明文 2。2.1.2 不能实际使用的 RSA 例子二上面的例子实在太简陋了，我们换一个数字稍微大一点的来看： 素数：1504629263、146270947积一：220083547182922061E：65537求得 D = 122005207634220149得到公钥 220083547182922061 和 65537，私钥 220083547182922061 和 122005207634220149。假如明文是 12345678987654321加密得到密文：99815494076289543解密得到明文：123456789876543212.2 为什么以上两个例子不能投入实际使用？上面两个例子以最简单的方式说明了 RSA 算法的机制，但为什么这两个例子无法在实际应用中使用？答案很简单，积一的素数因子分解太容易了，55 = 5 * 11 …

【提问GPT】TADOConnection连接失败的问题
type: item
date: 2024-09-02T16:24:54+08:00
description: AI摘要 摘要：在使用Delphi 7进行数据库开发时，如果遇到TADOConnection组件因网络掉包而报错的问题，可以通过调整连接属性、实现自动重连机制、使用连接池、定期检测连接状态和优化网络环境等方法来提高连接稳定性和应对掉包问题。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); 问题：假如你是一个delphi专家，我用Delphi7做数据库开发，采用的是CS模式，就是客户端+服务端模板，使用的TADOConnection组件，现在出现一个问题，如果网络连接有掉包的话，就会报错，请问有解决办法吗？GPT回答：在Delphi 7中使用TADOConnection组件进行CS模式的数据库开发时，如果网络连接出现掉包或者不稳定的情况，确实可能会导致错误发生。针对这个问题，有几种解决方法可以尝试：1. 设置TADOConnection的连接属性调整TADOConnection组件的属性，可以提高连接的稳定性：ConnectionTimeout: 设置连接超时的时间（单位为秒）。你可以增加超时时间，比如设置为30秒或更长时间，来应对网络波动。CommandTimeout: 设置命令超时的时间，确保在执行查询时不会因为网络问题而快速超时。KeepConnection: 设置为True，以保持连接，而不是在每次执行查询后关闭连接。LoginPrompt: 设置为False，避免在连接断开时弹出登录对话框。2. 实现自动重连机制在掉包或连接失败时，可以尝试自动重连。你可以在应用程序中捕获异常，检测到连接失败后，自动尝试重新连接。例如：procedure TForm1.HandleADOError(E: Exception); begin if (E is EADOError) then begin // 判断错误代码或错误信息，决定是否重连 if Pos('network-related', E.Message) > 0 then begin try ADOConnection1.Close; ADOConnection1.Open; ShowMessage('Reconnected to the database.'); except on E: Exception do ShowMessage('Failed to reconnect: ' + E.Message); end; end; end; end;然后在你的代码中，捕获异常并调用HandleADOError方法。3. 使用连接池连接池可以减少创建和销毁连接的开销，并能更好地管理连接。在TADOConnection中启用连接池的方法是使用连接字符串中的Pooling=true参数。ADOConnection1.ConnectionString := 'Provider=...;Data Source=...;Pooling=True;...';4. 定期检测连接状态定期发送“心跳”查询（例如SELECT 1）来检测连接状态，如果连接已断开，则进行重连。procedure TForm1.CheckConnection; begin if not ADOConnection1.Connected then begin try ADOConnection1.Open; except on E: Exception do begin ShowMessage('Failed to reconnect: ' + E.Message); end; end; end else begin try ADOQuery1.SQL.Text := 'SELECT 1'; ADOQuery1.Open; ADOQuery1.Close; except on E: Exception do HandleADOError(E); end; end; end;5. 优化网络环境如果可能的话，优化你的网络环境，减少掉包率。可以通过更换网络设备、优化网络配置、使用VPN、或者专线连接等方式，来提高网络的稳定性。总结以上几种方法可以组合使用，以提高Delphi 7中TADOConnection组件的数据库连接稳定性和应对掉包问题。你可以根据具体的场景选择合适的方法，来增强应用的健壮性。

CnPack 密码算法库 For Delphi
type: item
date: 2024-09-02T04:48:03+08:00
description: AI摘要 CnPack密码算法库是一个开源的加解密源码库，支持Delphi和C++Builder等开发环境，覆盖了国内外常见的加解密算法及中国国家商用密码算法。它包括对称加密、非对称加密、杂凑等多种算法，还提供编码解码、CA证书、大数支持等功能。CnPack开发组由一群热爱Delphi/C++Builder程序开发的中国程序员组成，旨在开发优秀的第三方免费开源产品。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); CnPack 密码算法库概述CnPack 密码算法库（CnPack Crypto Library）源于 CnPack 开发组的开源项目 CnVcl 组件包（CnVcl Component Package），是一套以纯 Object Pascal 语言编写的开源加解密源码库，支持 Delphi 5 至最新版本的 RAD Studio，支持 C++Builder 5/6 及 Lazarus/FPC，并支持 32 位与 64 位的 Windows、MacOS、Linux 等操作系统。CnPack 密码算法库致力于提供强大的加解密算法支持与数据安全保障。它覆盖了国内外常见的加解密算法及中国国家商用密码算法，包括对称加密、非对称加密、杂凑（或名散列、摘要、哈希）等大类及众多其他基础与辅助功能。许可协议CnPack 开发包以开放源码（Open Source）的形式发布，遵守 CnPack 的许可协议，受 CnPack 许可协议的保护。License 文件中有该协议的详细描述，具体内容可参考协议文件。主要内容对称加密：SM4、AES、DES、3DES、RC4、ChaCha20、TEA、ZUC非对称加密：RSA、ECC 椭圆曲线（魏尔斯特拉斯曲线，包括 SM2）、25519/448 椭圆曲线（蒙哥马利及扭曲爱德华曲线）杂凑：SM3、MD5、SHA1、SHA2/SHA3 系列（192、256、384、512）、SHAKE、CRC8/16/32/64、Poly1305、FNV、一次性杂凑签名算法 OTS其他密码学领域：SM9、同态加密、协同加密、格密码、NTRU编码解码：Base64、ASN.1（DER/BER）CA证书：RSA/ECC 证书申请、签发与校验大数支持：大整数、大有理数、大浮点数、一元大数多项式、二元大数多项式、一元大有理数分式运算支持：素数运算、浮点复数运算、位运算、矩阵运算、离散傅立叶变换、128 位整型支持其他：关联数据认证加密、动态口令 OTP、密钥派生 KDF、秘密共享的 Shamir 门限方案及 Feldman VSS 方案国密支持CnPack 密码算法库对中国国家商用密码算法标准有着完整而强大的支持：SM2：GM/T 0003.x-2012《SM2椭圆曲线公钥密码算法》，1～5SM3：GM/T 0004-2012《SM3密码杂凑算法》SM4：GM/T 0002-2012《SM4分组密码算法》SM9：GM/T 0044-2016《SM9 标识密码算法》ZUC：GM/T 0001.x-2012《祖冲之序列密码算法》，1～3另外也包括 OTP：《GB/T 38556-2020 信息安全技术动态口令密码应用技术规范》。安装与使用获取源码有两种途径可获取最新版的 CnPack 密码算法库。第一种途径是 CnPack 网站上下载或 gitee 上直接拉取。第二种途径是 CnPack 网站上下载或 github 上拉取下载最新的 CnVcl 源码包，在 Windows 系统中解压后运行 cnvcl/GenCrypto.bat，即可在 cnvcl 的同级目录下生成 cncrypto 目录，内有 CnPack 密码算法库所有源码。日常 CnPack 密码算法库也是自 CnVcl 中维护再同步的。编译引入CnPack 密码算法库不涉及 VCL/FMX 界面组件，仅是基础库的形式提供，因而可直接将 cncrypto/Source 目录加入 Delphi 的工程搜索路径，便可直接在工程中 uses 相应单元并调用。另外 CnPack 密码算法库也提供了运行期包的形式，在任一版本 Delphi 中打开 cncrypto/Package/CnCrypto.dpk，即可编译成 BPL 使用。注：如果在 Delphi 5 下编译 BPL，需手工将 requires 语句中的 vcl 改为 vcl50。测试用例cnc…