当前位置: 首页 > news >正文

Delphi5数据控制组件——查询

文章目录

    • 效果图
    • 参考
    • 查询
      • Free方法
      • Close方法
      • 总结
      • 通俗理解
    • 完整代码

效果图

在这里插入图片描述

参考

本文是在上一篇的基础上,将查询页面重新写一次。

在这里插入图片描述

查询

{点击查询}
procedure TForm2.Button1Click(Sender: TObject);
vartj,tj1,tj2,tj3,tj4,tj5,tj6,tj7:string;
begin//按照工号查找tj1:='1=1 ';//select * from RenYuanDangAn where GH like '%95%';//''表示'if CheckBox1.Checked thentj1:='GH like '''+'%'+Edit1.Text+'%'+'''';//按照姓名查找//select * from RenYuanDangAn where Xm like '%J%';tj2:='1=1';if CheckBox2.Checked thentj2:='Xm like '''+'%'+edit2.Text+'%'+'''';//按照性别查找//select * from RenYuanDangAn where Xb like '女';tj3:='1=1';if CheckBox3.Checked thenbeginif RadioGroup1.ItemIndex=0 thentj3:='Xb like '''+'%女%'+''''elsetj3:='Xb like '''+'%男%'+'''';end;//按照生日查找//select * from RenYuanDangAn where Csrq <='2024-1-1' and Csrq >= '1990-1-1';tj4:='1=1';if CheckBox4.Checked thentj4:='Csrq >='''+datetostr(DateTimePicker1.Date)+ ''' and Csrq <='''+datetostr(DateTimePicker2.Date)+'''';//按照婚否tj5:='1=1';if CheckBox5.Checked thenif CheckBox6.Checked thentj5:=' Hf=1 'elsetj5:=' Hf=0 ';//按照职称tj6:='1=1';if CheckBox7.Checked thentj6:=' Zc like '''+combobox1.Text+'''';//按照工资tj7:='1=1';if CheckBox8.Checked thentj7:=' Gz >='+edit3.Text+' and Gz<='+edit4.Text;tj:='select * from RenYuanDangAn where ' + tj1 + ' and ' + tj2 + ' and ' + tj3 +' and ' + tj4 +' and ' + tj5 + ' and ' + tj6 + ' and ' + tj7;
//  showmessage(tj);Query1.Close;Query1.SQL.Clear;Query1.SQL.Add(tj);Query1.Open;
end;

Free方法

  • 作用Free方法用于释放对象所占用的内存资源。在Delphi中,当你创建一个对象(如窗体、控件等)时,系统会在内存中为该对象分配一定的空间。当你不再需要这个对象时,应该调用Free方法来释放它所占用的内存,以避免内存泄漏。
  • 特点
    • Free方法通常与Destroy方法结合使用。Destroy是一个虚方法,负责执行对象销毁前的清理工作(如释放子对象、关闭文件句柄等)。Free方法会检查对象是否为nil,如果不是,则调用Destroy方法来销毁对象。
    • 需要注意的是,Free方法只会释放对象所占用的内存,并不会将对象的引用(指针)设置为nil。因此,在调用Free后,如果还持有该对象的引用,可能会导致野指针问题。为了避免这种情况,Delphi 5及以后的版本提供了FreeAndNil方法,该方法会先调用Free,然后将对象的引用设置为nil

Close方法

  • 作用Close方法主要用于关闭窗体或数据流(如文件、数据库连接等)。对于窗体而言,Close方法的行为类似于隐藏窗体(Hide),但它还会触发窗体的Close事件和OnClose事件处理程序。这些事件处理程序可以执行额外的清理工作,如保存数据、询问用户是否真的要关闭窗体等。
  • 特点
    • Close方法并不直接释放窗体所占用的内存。如果你只是想关闭窗体并希望稍后能够重新打开它,那么应该使用Close方法而不是Free方法。
    • OnClose事件处理程序中,你可以通过设置Action参数来控制窗体的关闭行为。例如,你可以将Action设置为caFree来在关闭窗体后释放其内存。但是,这通常是在非模态窗体的上下文中进行的,因为模态窗体会在ShowModal方法返回时自动处理资源释放。

总结

为什么会有这个思考呢?是因为我在主窗体新建了模态查询窗口,关闭查询窗口时选择free掉而不是close,因此再次使用查询窗口时,会出现内存错误的问题。

  • Free方法用于释放对象所占用的内存资源,应与Destroy方法结合使用,并注意处理对象的引用以避免野指针问题。
  • Close方法用于关闭窗体或数据流,并触发相应的事件处理程序以执行额外的清理工作。它并不直接释放窗体所占用的内存,而是依赖于OnClose事件处理程序中的逻辑来决定是否释放。

通俗理解

想象你有一个装满书的书架(书架就是对象,书就是对象所占用的资源),书架旁边有一个便签(便签就是对象的引用或指针)。当你不再需要书架上的书时,你可以决定清空书架(这相当于调用Free方法释放对象所占用的内存),但是你没有撕掉或丢弃旁边的便签(这相当于没有将对象的引用设置为nil)。

现在,如果你还保留着那个便签(即持有对象的引用),并尝试根据便签上的信息去找书架上的书(即尝试访问对象),你会发现问题:书架已经空了,但便签还在,它指向的是一个已经不存在的书架(即野指针)。这种情况下,你可能会感到困惑、失望,甚至可能走入错误的房间(即程序崩溃或不稳定)。

为了避免这种情况,当你清空书架时,你也应该同时撕掉或丢弃那个便签,这样你就不会根据一个无效的信息去寻找东西了。在Delphi中,这相当于在调用Free方法后立即将对象的引用设置为nil,这通常是通过FreeAndNil方法完成的,它会自动为你完成这两个步骤。

所以,简单来说,Free方法只负责清空书架(释放内存),但不会自动撕掉便签(不设置引用为nil),这可能导致你根据错误的便签信息去寻找东西(野指针问题)。为了避免这个问题,你应该确保在清空书架后也撕掉便签(即将引用设置为nil)。

完整代码

在这。

相关文章:

Delphi5数据控制组件——查询

文章目录 效果图参考查询Free方法Close方法总结通俗理解 完整代码 效果图 参考 本文是在上一篇的基础上&#xff0c;将查询页面重新写一次。 查询 {点击查询} procedure TForm2.Button1Click(Sender: TObject); vartj,tj1,tj2,tj3,tj4,tj5,tj6,tj7:string; begin//按照工号查…...

git pull之后发现项目错误,如何回到之前的版本方法

目录 首先我们打开小程序的cmd的黑窗口&#xff0c;git reflog查看之前的版本 之后再git reset --hard main{1} 我这个就已经返回了之前的6daaa2e的版本了 首先我们打开小程序的cmd的黑窗口&#xff0c;git reflog查看之前的版本 之后再git reset --hard main{1} 我这个就已…...

防跌倒识别摄像机

防跌倒识别摄像机 是一种结合了人工智能技术和监控摄像技术的先进设备&#xff0c;旨在通过实时监测和分析监控画面中的行为动作&#xff0c;及时发现并预防跌倒事件的发生。这种摄像机在医疗、养老院、家庭等场所有着广泛的应用前景。 防跌倒识别摄像机在医疗领域具有重要意义…...

MyQql性能诊断与实践

获取更多免费资料&#xff0c;见下图...

有序序列判断

描述 输入一个整数序列&#xff0c;判断是否是有序序列&#xff0c;有序&#xff0c;指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。 数据范围&#xff1a;3 < n< 50 序列中的值都满足 1< val < 100 输入描述&#xff1a; 第一行输入一个整数N…...

【Kubernetes知识点问答题】健康检查

目录 1. Kubernetes 对集群 Pod 和容器健康状态如何进行监控和检测的。 2. 解释 LivenessProbes 探针的作用及其适用场景。 3. 解释 ReadinessProbe 探针的作用及其适用场景。 4. 解释 StartupProbe 探针的作用及其适用场景。 5. 说明 K8s 中 Pod 级别的 Graceful Shutdown…...

【Prometheus】PromQL数据类型以及常用的计算函数用法详解

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

STM32高级定时器生成互补PWM的原理与代码实现

文章目录 前言一 CubeMx配置1.1 TIM1 Mode and Configuration1.2 Paramter Settings 二 程序代码三 仿真分析总结 前言 互补 PWM&#xff08;Complementary PWM&#xff09;是指一对逻辑状态互为反相的 PWM&#xff08;脉冲宽度调制&#xff09;信号。这种信号配置常见于电机控…...

双指针题总结

双指针题总结 hot100移动零盛水最多的容器三数之和接雨水最小覆盖子串 hot100 移动零 题目链接&#xff1a; 283.移动零 代码&#xff1a; class Solution {public void moveZeroes(int[] nums) {int slow 0;for (int fast 0; fast < nums.length; fast ){if (nums[fas…...

[数据集][目标检测]人脸口罩佩戴目标检测数据集VOC+YOLO格式8068张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;8068 标注数量(xml文件个数)&#xff1a;8068 标注数量(txt文件个数)&#xff1a;8068 标注…...

JVM3-双亲委派机制

目录 概述 作用 如何指定加载类的类加载器&#xff1f; 面试题 打破双亲委派机制 自定义类加载器 线程上下文类加载器 Osgi框架的类加载器 概述 由于Java虚拟机中有多个类加载器&#xff0c;双亲委派机制的核心是解决一个类到底由谁加载的问题 双亲委派机制&#xff…...

经典文献阅读之--DEviLOG(使用合成数据和真实世界数据的数据驱动占用网格映射基于Transformer的BEV方案量产方案)

0. 简介 在自动驾驶汽车&#xff08;AV&#xff09;的感知任务中&#xff0c;数据驱动的方法往往优于传统方法。这促使我们开发了一种基于数据的方法来从激光雷达测量中计算占用网格地图&#xff08;OGM&#xff09;。我们的方法扩展了之前的工作&#xff0c;使得估计的环境表…...

ssh之登录服务器后,自动进入目录(四十七)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…...

如何看待IBM中国研发部裁员?

背景&#xff1a; 近日&#xff0c;IBM中国宣布撤出在华两大研发中心&#xff0c;引发了IT行业对于跨国公司在华研发战略的广泛讨论。这一决定不仅影响了众多IT从业者的职业发展&#xff0c;也让人思考全球化背景下中国IT产业的竞争力和未来发展方向。面对这一突如其来的变化&…...

计算机毕业设计选题推荐-土地承包管理系统-Java/Python项目实战(亮点:数据可视化分析、账号锁定、智能推荐)

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...

2024年高校辅导员考试题库及答案

一、判断题 121.高校学生身份权是基于高等教育的性质&#xff0c;学生应该获得的本体性权利。 答案&#xff1a;正确 122.学费占年生均教育培养成本的比例和标准由财政部制定。 答案&#xff1a;错误 123.享受国家专业奖学金的高校学生免缴学费。 答案&#xff1a;错误 124…...

使用python对股票市场进行数据挖掘的书籍资料有哪些

炒股自动化&#xff1a;申请官方API接口&#xff0c;散户也可以 python炒股自动化&#xff08;0&#xff09;&#xff0c;申请券商API接口 python炒股自动化&#xff08;1&#xff09;&#xff0c;量化交易接口区别 Python炒股自动化&#xff08;2&#xff09;&#xff1a;获取…...

Python 将字典转换为 JSON

在 Python 中&#xff0c;可以使用 json 模块将字典转换为 JSON 格式的字符串。该模块提供了 json.dumps() 方法&#xff0c;用于将 Python 对象&#xff08;如字典、列表&#xff09;序列化为 JSON 字符串。 1、问题背景 用户想要将一个 Python 字典转换为 JSON 格式&#xf…...

就服务器而言,ARM架构与X86架构有什么区别?各自的优势在哪里?

一、服务器架构概述 在数字化时代&#xff0c;服务器架构至关重要。服务器是网络核心节点&#xff0c;存储、处理和提供数据与服务&#xff0c;是企业和组织信息化、数字化的关键基础设施。ARM 和 x86 架构为服务器领域两大主要架构&#xff0c;x86 架构服务器在市场占主导&…...

[论文笔记]Dimensionality Reduction by Learning an Invariant Mapping

引言 今天带来一篇真正远古(2005年)论文的笔记,论文是Dimensionality Reduction by Learning an Invariant Mapping。 该论文中提出的对比损失(2.1节)可以用于训练嵌入模型。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 降维涉及将一…...

链表算法题(下)

在链表算法题&#xff08;上&#xff09;长中我们已经学习了一系列的链表算法题&#xff0c;那么在本篇中我们将继续来学习链表的算法题&#xff0c;接下来就继续来破解链表的算法题吧&#xff01; 1.相交链表 160. 相交链表 - 力扣&#xff08;LeetCode&#xff09; 通过以上…...

UE4_后期处理_后期处理材质及后期处理体积二

效果&#xff1a; 步骤&#xff1a; 1、创建后期处理材质,并设置参数。 2、回到主界面&#xff0c;找到需要发光的物体的细节面板。 渲染自定义深度通道&#xff0c;默认自定义深度模具值为10&#xff08;需要修改此值&#xff0c;此值影响物体的亮度&#xff09;。 3、添加…...

Linux系统与高效进程控制的实战技巧

Linux系统与高效进程控制的实战技巧 Linux&#xff0c;作为一种开源的Unix-like操作系统内核&#xff0c;自1991年由芬兰程序员Linus Torvalds首次发布以来&#xff0c;已成为全球范围内广泛使用的操作系统之一。其强大的功能、灵活的配置以及高度的可定制性&#xff0c;使得L…...

陈文自媒体:抖音创作者伙伴计划,你不知道的几点!

本月的2号开始&#xff0c;官方就下达了通知&#xff0c;各位西瓜创作者&#xff0c;大家要抓紧时间升级为抖音创作者伙伴计划&#xff0c;如果你不升级是吧&#xff0c;没问题&#xff0c;19号开始不发西瓜和中视频收益了。 在这个政策解读和操作过程中&#xff0c;我从同行、…...

便携式气象仪器的主要特点

TH-BQX9】便携式气象仪器&#xff0c;也称为便携式气象仪或便携式自动气象站&#xff0c;是一款高度集成、低功耗、可快速安装、便于野外监测使用的高精度自动气象观测设备。以下是关于便携式气象仪器的详细介绍&#xff1a; 主要特点 高精度与多功能&#xff1a;便携式气象仪器…...

【开源风云】从若依系列脚手架汲取编程之道(四)

&#x1f4d5;开源风云系列 &#x1f34a;本系列将从开源名将若依出发&#xff0c;探究优质开源项目脚手架汲取编程之道。 &#x1f349;从不分离版本开写到前后端分离版&#xff0c;再到微服务版本&#xff0c;乃至其中好玩的一系列增强Plus操作。 &#x1f348;希望你具备如下…...

华为 HCIP-Datacom H12-821 题库 (15)

有需要题库的可以看主页置顶 1.以下关于 OSPF 路由聚合的描述&#xff0c;错误的是哪一项&#xff1f; A、OSPF 中任意一台路由器都可以进行路由聚合的操作 B、OSPF 有两种路由聚合方式&#xff1a;ABR 聚合和ASBR 聚合 C、路由聚合是指将相同前缀的路由信息聚合一起&#xf…...

MT6895(天玑8100)处理器规格参数_MTK联发科平台方案

MT6895平台 采用台积电5nm工艺&#xff0c;与天玑 8000 相比性能提升 20% &#xff0c;搭载4 个 2.85GHz A78 核心 4 个 2.0GHz A55 核心&#xff0c;CPU能效比上一代提高 25% 。GPU 采用了第三代的Valhall Arm Mali-G610 MC6架构&#xff0c;拥有6核心&#xff0c;搭配天玑81…...

从 0 开始搞定 RAG 应用系列(第一篇):构建简单 RAG

从 0 开始搞定 RAG 应用系列&#xff08;第一篇&#xff09;&#xff1a;构建简单 RAG 前言 LLM 已经从最初的研究性转变为实际应用性&#xff0c;尤其在今年各大 LLM 厂商都在研究 LLM 的商业化落地方案&#xff08;包括我司&#xff09;。而在各种商业化场景中个人觉得最具…...

接口(Interface)和端点(Endpoint)的区别

在软件开发和相关的文档中&#xff0c;我们经常会看到两个专有名词&#xff1a;接口&#xff08;Interface&#xff09;和端点&#xff08;Endpoint&#xff09;。而它们的使用场景有很大的重合部分&#xff0c;让人有些分不清到底用哪个。那么&#xff0c;这两者到底有什么区别…...