当前位置: 首页 > 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节)可以用于训练嵌入模型。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 降维涉及将一…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...