检查特殊字符的简单VCL

C++ Builder自研JSON解析与HTTP客户端库:解决VCL开发网络交互痛点 在现代软件开发中,JSON数据交换格式和HTTP网络协议是构建客户端-服务端应用的核心技术。JSON以其轻量、易读的特性,成为API通信的事实标准;而HTTP协议则是实现网络请求与响应的基础。理解JSON的语法结构、解析原理,以及HTTP的请求/响应模型、状态码机制,对于开发健壮的客户端应用至关重要。在C++ Builder的VCL生态中,由于编译器兼容性和库生态的限制,直接使用现代C++库(如nlohmann/json、cpp-httplib)常面临编译失败或集成困难。为此,自研一套深度契合VCL范式、对 阅读详情

 

这是个很简单的组件,编写它的目的也很单纯,就是想解决数据录入时的特殊字符检查问题。一开始要写函数实现,不过觉得麻烦,后来就想到写一个简单的VCL来遍历Form上所有的组件的方法。这个VCL目前只是检查所有的TEdit和TComboBox组件,有兴趣的朋友可以自己扩充功能。

我想这个VCL对于编写数据库程序的人员来说还是有一点帮助的,比如对单引号的Check。

想要检查什么符号只要在属性中设置一下就搞定,而且运行时只需要执行一个Checking函数,他就会自动检查咯。

它的另一个作用就是可以作为编写VCL的简单入门例程。

 

unit SymbolChecker;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls,StdCtrls,Dialogs,StrUtils;

type
  TCheckControl = (cTEdit, cTComboBox);
  TCheckControls = set of TCheckControl;

  TSymbolChecker = class(TComponent)
  private
    { Private declarations }
    FActive: boolean;
    FCheckControls:TCheckControls;
    FCheckString:String;
    procedure SetActive(Value: boolean);
    procedure SetCheckControls(Value: TCheckControls);
    procedure SetCheckString(Value: String);
  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
  published
    { Published declarations }
    procedure Checking();
    property Active: boolean read FActive write SetActive default false;
    property CheckControls: TCheckControls read FCheckControls write SetCheckControls default [cTEdit, cTComboBox];
    property CheckString: String read FCheckString write SetCheckString;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('MyVCL', [TSymbolChecker]);
end;

constructor TSymbolChecker.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  CheckControls := [cTEdit, cTComboBox];
end;

{ Set property Active Value }
procedure TSymbolChecker.SetActive(Value: boolean);
begin
  if Value = FActive then exit;
  FActive := Value;
end;

{ Set property CheckControls Value }
procedure TSymbolChecker.SetCheckControls(Value: TCheckControls);
begin
  if Value = FCheckControls then exit;
  FCheckControls := Value;
end;

{ Set property CheckString Value }
procedure TSymbolChecker.SetCheckString(Value: String);
begin
  if Value = FCheckString then exit;
  FCheckString := Value;
  if Trim(FCheckString) = '' then SetActive(false);
end;

procedure TSymbolChecker.Checking();
var
   I,J:integer;
begin
   { property Active=true then execute }
   if FActive then
   begin
      { property CheckTEdit=true then execute }
         for I:= 0 to owner.ComponentCount - 1 do
         begin
            { Check TEdit }
            if (owner.Components[I] is TEdit) and (cTEdit in CheckControls) then
            begin
               for J :=1 to Length(Trim(FCheckString)) do
               begin
                  if pos(MidStr(Trim(FCheckString),J,1),TEdit(owner.Components[I]).Text)>0 then
                  begin
                     ShowMessage('error symbol!');
                     TEdit(owner.Components[I]).SetFocus;
                     exit;
                  end;
               end;
            end;
            { Check TComboBox }
            if (owner.Components[I] is TComboBox) and (cTComboBox in CheckControls) then
            begin
               for J :=1 to Length(Trim(FCheckString)) do
               begin
                  if pos(MidStr(Trim(FCheckString),J,1),TComboBox(owner.Components[I]).Text)>0 then
                  begin
                     ShowMessage('error symbol!');
                     TComboBox(owner.Components[I]).SetFocus;
                     exit;
                  end;
               end;
            end;
         end;
   end;
end;

end.


最后要说明一点的是它是用Delphi6写的。

:)

C++ Builder 6 源代码深度解析:从经典VCL框架到现代工程实践 在桌面应用开发领域,快速应用开发(RAD)框架通过可视化组件和事件驱动编程,极大提升了软件构建效率。其核心原理在于将界面设计与业务逻辑分离,通过封装底层系统API(如Windows消息机制和图形设备接口)为可重用的控件库。这种范式不仅加速了原型开发,更在企业级应用、工控系统和数据库前端等场景中证明了其工程价值。以经典的VCL框架为例,它代表了RAD理念在C++环境下的高峰实践。本文聚焦于对C++ Builder 6(BCB6)这一特定历史版本所附带的示例源代码进行体系化研究,旨在挖掘其中关于**数据库访问层 阅读详情

相关推荐

Delphi DevExpress VCL 25.2.7 安装部署与TcxGrid实战指南

第三方控件库是提升桌面应用开发效率与界面现代化水平的关键技术组件。其核心原理在于扩展原生框架功能,通过封装复杂UI逻辑与交互模式,为开发者提供可复用的高性能可视化模块。在Delphi生态中,DevExpress VCL Controls作为业界标杆,其技术价值体现在大幅缩短数据密集型应用(如ERP、CRM系统)的开发周期,并提供媲美Office的现代交互体验。典型应用场景包括企业级数据管理后台、仪表盘和复杂表单系统。本文聚焦于DevExpress VCL 25.2.7版本的安装部署全流程,深入解析TcxGr

weixin_34160277的博客 354

前端检测字符串中是否含有特殊字符,并返回该特殊字符

二、判断字符串中是否含有特殊字符,并返回该特殊字符。一、判断字符串中是否含有特殊字符。

weixin_63896561的博客 1758

DevExpress VCL 26.1.3 在 Delphi 13.1 下的安装配置与实战指南

Delphi作为经典的桌面开发工具,其原生VCL控件在复杂业务界面面前往往显得力不从心。DevExpress VCL控件库通过统一皮肤引擎、高性能数据表格和丰富编辑组件,为Win32/Win64应用补齐了现代化界面开发所需的基础设施。在Delphi 13.1环境中正确安装DevExpress VCL 26.1.3并非简单下一步,涉及版本匹配、IDE检测、设计时包注册、运行时包部署等关键环节。对于需要实现多层表头、分组统计、排班日历或深色皮肤的企业级系统,这套控件组合能显著缩短开发周期。文章从实际工程角度梳理

weixin_34337381的博客 519

检测特殊字符的正则表达式

检测特殊字符 正则表达式特殊字符 用户在取名或改名时,输入特殊字符的情况检测。

JeterPong's Column 1万+

Delphi 13 FastReport VCL v2025.2 控件部署、数据绑定与性能优化全指南

在桌面应用开发中,报表生成是处理业务数据可视化输出的核心需求,其原理在于将数据源(如数据库、文件)通过报表引擎进行格式化渲染。这项技术的价值在于能够将复杂、异构的数据转化为清晰、可打印或可导出的文档,极大提升信息传递效率。在Delphi的VCL生态中,FastReport VCL因其强大的设计器与灵活的数据源适配能力,成为实现这一需求的常用工具。其应用场景广泛覆盖从简单的数据列表打印到包含动态脚本、图表和复杂分组的业务报表生成。本文聚焦于FastReport VCL v2025.2在Delphi 13 Fl

weixin_33834075的博客 676

DevExpress VCL 23.2.6 Full Source 实战:从安装到源码级定制

在Delphi桌面应用开发领域,VCL组件库是构建高效界面的重要基石。DevExpress VCL作为一套功能强大的商业控件套件,其Full Source版本允许开发者深入源码层面进行调试与二次开发,从而突破标准封装带来的限制。理解组件库的版本选型、环境配置与库路径管理,是发挥其价值的前提。借助源码级调试,开发者可精确定位性能瓶颈,并通过继承重写实现深度定制,例如自定义网格或弹出菜单的默认行为。以DevExpress VCL 23.2.6 Full Source为实例,梳理从安装部署到实际应用的完整链路,并

weixin_28839439的博客 282

特殊字符:安全攻防中容易遗漏的细节

针对特殊字符校验的背景、原则、指导做了总结,以及对半/全角、回车/换行符易混淆字符的区分做了实战验证。

华为云官方博客 1062

FastReport VCL 6.8.4 Enterprise从安装到实战全攻略

在桌面应用开发中,报表组件是连接数据与业务决策的关键桥梁。FastReport VCL作为一套基于RAD Studio的原生报表组件,通过VCL框架实现高效的数据绑定与可视化设计,支持Delphi与C++ Builder环境,广泛应用于银行、医疗、制造业等企业系统。其Enterprise版本提供了完整的数据源连接器、交叉表、图表及PDF导出能力,尤其适合需要快速交付复杂主从报表的团队。本文从环境准备、组件安装、数据源绑定、报表设计到导出调优,系统梳理FastReport 6.8.4实战流程,并针对编译报错、

weixin_31321361的博客 268

数据库中检测某个字段是否有特殊字符

数据库中检测某个字段是否有特殊字符 1、检查是否包含空格或者tab select * from student where regexp_like(name,'[:blank:]') 2、检查是否有任何标点符号 select * from student where regexp_like(name,'[:punct:]') 3、检查部分特殊字符 select id,spe_char from(select id,regexp_replace(id,'[^!@#$%&*()+=:;",.?\|]

qq_43528451的博客 3840

Cursor Cloud Agent:云原生编程工作流的底层重构

编程工作流正从本地计算范式转向云原生执行范式。Cloud Agent 本质是将代码理解、生成、执行与调试等核心能力下沉至隔离、可控、按需分配的云端虚拟机,通过 Firecracker 微虚拟机实现亚秒级启动,并依托上下文快照、环境镜像化和内核级沙箱保障一致性、算力弹性与数据安全。这一范式突破了传统本地 AI 编程助手在环境依赖、调试能力与企业合规上的根本局限,使 IDE 从编辑工具升维为分布式开发指挥中心。本文深入解析其运行机制与工程落地实践。

weixin_34354173的博客 337

VESC电调高级调参指南:电机校准与性能优化实战解析

本文详细解析了VESC电调的高级调参方法,包括电机校准与性能优化实战技巧。从基础参数设置到高级机械参数优化,再到动态性能调优,提供了全面的调参指南。特别针对电机类型、功率设置、电池参数配置等关键环节给出实用建议,帮助用户充分发挥VESC电调的性能潜力。

weixin_30772105的博客 196

strchr()函数

如果需要对字符串中的单个字符进行查找,那么应该使用 strchr 或 strrchr 函数。 其中,strchr 函数原型的一般格式如下: char *strchr(const char *s, int c); 它表示在字符串 s 中查找字符 c,返回字符 c 第一次在字符串 s 中出现的位置,如果未找到字符 c,则返回 NULL。也就是说,strchr 函数在字符串 s 中从前到后(或者称为从左...

没有西瓜汁 1万+

【初阶】手把手教你轻松上手Denodo | 连接数据库并创建基本视图 (二)

在本教程的第二部分,我们将涵盖:连接到数据库,与创建基本视图。

Denodo的博客 1106

检查特殊字符的简单VCL (转)

检查特殊字符的简单VCL (转)[@more@] 这是个很简单的组件,编写它的目的也很单纯,就是想解决数据录入时的特殊字符检查问题。一开始要写函数实现,不过觉得麻烦,后来就想到写一个简单的VCL来遍历Form上所有的组件的方...

csd3176的博客 198

Ghost备份还原Win10全攻略:从老电脑迁移到新硬盘,ESP分区处理是关键

本文详细介绍了使用Ghost工具将Win10系统从旧电脑迁移到新硬盘的全过程,特别强调了ESP分区的关键处理方法。通过分步指导备份、分区准备、系统还原和引导修复,帮助用户实现无缝系统迁移,解决常见问题如启动失败和驱动兼容性。

weixin_30823001的博客 672

Android Qcom USB Driver学习(五)

在前面的第二期中,我们知道一些非标的USB的充电类型Floatingcharger,其具有和普通DCP相似的大电流能力,但在最初检测的时候会限制Inputcurrentlimit到100mA,来进行检测是否是SDP类型,所以要支持大电流输入就需要进行vote操作,前面的几篇都有涉及,所以本文学习一下pmicusbcharger都相关的vote机制。...

Android驱动开发 2901

oracle中特殊字符处理

oracle中特殊字符处理 notepadd++中显示所有在字符观察 CR意思是carriage return,回车,\r,ASCII码为13 LF意思是linefeed,换行,\n,ASCII码为10 参考http://blog.youkuaiyun.com/mike__cool/article/details/53291821 在Oracle中...

weixin_30950887的博客 733

深入理解HanLP1.x,填平可能遇到的坑

提取指定数量的摘要。自定义词典为什么要单独领出来讲呢?因为在我们的业务开发中,可能分词的效果并不理想,需要定制自己的词库,索引更加常用。例如:小米su7特斯拉modelY比亚042025款6575767670908我们需要分出小米su72025款等词。我们分别看看用字典和不用字典的效果。

static_coder的博客 977

oracle中去掉文本中的换行符、回车符、制表符等特殊字符

在Oracle中,有的时候字段(设计不当)被设计成char类型,如果包含特殊字符是会查不出数据,用肉眼是看不出来的, 就需要检查数据中是否存在特殊字符,需要把特殊字符去掉。 一、特殊符号ascii定义  制表符 chr(9)   换行符 chr(10)  回车符 chr(13) 二、嵌套使用repalce,注意每次只能提交一个符号,如先回车再换行           se

2万+

TC275-AutoSAR实战:Davinci Cfg多核OS配置与调试技巧

本文详细介绍了在TC275芯片上使用Davinci Cfg工具进行AutoSAR多核操作系统配置的实战步骤与调试技巧。内容涵盖从导入arxml文件的常见“坑”开始,到配置Det、EcuC、创建多核OS实例、关联OS应用、创建任务与设置优先级调度,最后分享了利用Det日志、调试器多核视图及处理核间通信与缓存一致性等关键调试方法,旨在帮助开发者高效完成复杂车载ECU软件集成。

weixin_29219189的博客 489

如何在 UniApp 中接入讯飞语音听写功能 文末附vue3+vue2完整代码

在开发过程中,我遇到了讯飞接口返回空数据的问题。通过仔细检查传送的每一帧数据,我发现问题出在第一帧的配置信息以及 Base64 数据的切片。确保每一帧的数据正确且符合接口要求,问题就能够得到解决。希望这个过程能帮助你在项目中顺利对接讯飞语音识别。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 997

C++Builder 2009深度解析:VCL框架、数据库开发与多线程编程实战技巧

在Windows桌面应用开发领域,快速应用开发(RAD)理念通过可视化组件和事件驱动编程,显著提升了软件构建效率。其核心原理在于将界面元素、数据绑定和业务逻辑进行封装,通过属性-事件模型实现高效交互。这一技术价值在于能够以更少的代码量快速构建功能复杂、界面专业的应用程序,特别适合维护遗留系统或开发特定行业的工具软件。应用场景广泛覆盖工控、数据采集、仪器仪表等需要稳定高效Windows桌面解决方案的领域。本文聚焦于C++Builder 2009这一经典RAD工具,深入探讨其VCL框架的精髓使用心法,详解TCl

weixin_34248487的博客 279

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Delphi 特殊字符串的替换

Delphi 条件限制替换字符 编程中,对特殊字符的替换要求很高。 对此,要求有条件限制性的替换。 例如:原代码进行替换: TsDateEdit,Edit123,Edit;RichEdit111,DBRichEdit5,sEdit Edit 上行字符中,要求Edit改为sEdit,仅替换变更中的Edit,如果使用常规的替换函数,是不行的。对此 ,提出方案: 1、检查被替换字符前一位的字符值 (1)认可的字符 (2)不认可的字符 2、检查被替换字符前一位的字符值 (1)认可的字符

lyhoo163的专栏 6152

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

pandoc Org 解析器测试用例剖析:为什么 “11. and 12. 09.“ 不会被当成有序列表(7557)

在 pandoc 的 Org-mode 读取器中,"数字加点"(如 `11.`)既可以是有序列表标记,也可以是一段普通文本的开头,这种歧义经常导致意外解析。本文以仓库中的命令测试用例 [test/command/7557.md](https://link.gitcode.com/i/43d73a57d2cb4465bd3f19be18af2a1a) 为切入点,完整复现该用例、逐行解读其期望输出的

gitblog_00802的博客 434
上一篇: 如何得到应用程序的运行时间
下一篇: 处理鼠标移出事件
40Star
博客等级 码龄25年 1粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值