Delphi TQuery 的Locate用法

【GameFramework框架内置模块】8、文件系统(File System) 最近好忙,鸽了好久。不能颓废了,继续发力。今天分享的是GF框架的文件系统。首先,引用比较官方的说法:GF的FileSystem虚拟文件系统,使用类似磁盘存储的感念对零散的文件进行集中管理,优化资源加载时产生的内存分配,也可以对资源进行局部片段加载,极大的提升了资源加载的性能。通俗点讲就是,我这个模块就是加载磁盘文件的,优化加载时产生的内存分配。那么,它是怎么优化的呢? 阅读详情
Help里的解释

function Locate(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean;

KeyFields: is a string containing a semicolon-delimited list of field names on which to search.

KeyValues: is a variant array containing the values to match in the key fields.

TLocateOptions is a set that optionally specifies additional search latitude when searching on string fields.

关于LocateOptions
type
  TLocateOption = (loCaseInsensitive, loPartialKey);
  TLocateOptions = setof TLocateOption;

loCaseInsensitive Key fields and key values are matched without regard to case.//忽略大小写
loPartialKey Key values can include only part of the matching key field value; //只需部分匹配,从头开始匹配
{另外,如果KeyFields里没有字符串类型或者LocateOptions=[],该函数都会忽略此项}

看了这么多,到底Locate是干么的呢?请看

Searches the dataset for a specified record and makes that record the current record.

Call Locate to search a dataset for a specific record and position the cursor on it.

很显然Locate有别于过虑,可不要等同起来哦。Locate主要是在已经Open出来的数据集里定位你要的资料。

好了,看了Help里面密密麻麻的E文,头都晕了,是不是因为头晕所以一直学不好“英国历史(English)”呢?我怎么看E文都是这种感觉,还是中国的方块字看起来亲切舒服,^_^,扯远了,言归正传,看了理论的东西,我们来实践一下。

做事情总是从易处着手,写程序也不例外。我们先看看单栏的用法。

strCode:='Abc'
Tquery1.Locate('code',strcode,[loCaseInsensitive])

这样TQuery,就会将光标定位到code字段中等于Abc(abc,aBc,abC,....)的记录上。

不过,我们既然用来查询大部分情况下我们都是要模糊查询的,所以这样并不是我们要用的方法,我们只要稍微改下Option就OK了。
Tquery1.Locate('code',strcode,[loPartialKey])

这样找到的是这样的结果code中“包含”(是从头开始匹配而不是真正的包含)Abc(Abcddfe...,....)

当然也可以两个同时使用

Tquery1.Locate('code',strcode,[loCaseInsensitive,loPartialKey])

with CustTable do
  Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '408-431-1000']), [loPartialKey]);

  1、使用“;”来分割多个字段名称,用VarArrayOf()来传递多个定位值。
  2、字段一定要和数据库完全一样,即使你用习惯了的空格也不行。虽然使得程序看起来跟清楚点,但是Locate不会自己做Trim,所以它把空格也当成字段名称的一部分。
  3、因为定位值采用Variants,所以定位就不知局限于字符串了。
  4、对于多栏查询的结果,一定要所有栏位全部符和才可以,只要有一栏不符合,就会返回False。
  5.  最好不用对空值进行定位,会进行从头到尾的遍历,影响速度.

 Ok,关于Locate的用法就说到这里,写个小例子当作总结。

 var
  LocateSuccess: Boolean;
  SearchOptions: TLocateOptions;
  StrField,StrLocate:String;//字段名称,定位值
begin
  SearchOptions := [loCasesensitive,loPartialKey];
  LocateSuccess := CustTable.Locate(StrField,StrLocate, SearchOptions);
end;


从 30 天试用到企业级落地,2026 年学习和试用 SAP AI 的完整路线图 摘要:SAP AI产品体系存在试用版本与商业版本的边界模糊问题,需区分业务嵌入AI(如Joule)、开发者工具(SAP Build Code)和AI基础平台(Generative AI Hub)三个层级。建议学习路径:1)通过SAP Learning专区掌握理论框架;2)优先使用30天Generative AI Hub基础试用体验模型编排;3)结合90天BTP试用账户开发完整应用。特别注意免费计划已陆续停止,需以最新官方文档为准。开发者应重点关注AI如何与SAP技术栈(CAP、Fiori等)集成,而非单纯功 阅读详情

相关推荐

AlertManager的使用(邮件和微信告警)

一、AlertManager概述 Prometheus 包含一个报警模块,就是我们的 AlertManager,Alertmanager 主要用于接收 Prometheus 发送的告警信息,它支持丰富的告警通知渠道,而且很容易做到告警信息进行去重,降噪,分组等,是一款前卫的告警通知系统。 Alertmanager是一个独立的告警模块,接收Prometheus等客户端发来的警报,之后通过分组、删除重复等处理,并将它们通过路由发送给正确的接收器;告警方式可以按照不同的规则发送给不同的模块负责人,Alertman

weixin_45880055的博客 2万+

delphi中locate查找方法

http://zhidao.baidu.com/question/38810347.html 表是桌面数据库建的,有三个字段:用户类型,用户名,密码.我是建一个登陆系统,用户类型是用combobox选择的,就两个选项:管理员和普通用户.现在我想用locate的查找方法来查找用户名和密码并赋给edit1和edit2(主要是查找三个字段,把我弄糊涂了).  TDataSet控件以及

冷月宫主的专栏 1919

robomimic实验复现全流程:从数据集下载到训练视频生成

本文详细介绍了机器人模仿学习项目RoboMimic的完整实验复现流程。内容涵盖从使用Conda创建Python 3.8隔离环境、安装RoboSuite仿真器和MuJoCo物理引擎,到下载并探索数据集、配置与启动模型训练,最后进行模型评估和生成策略执行视频。该指南旨在帮助研究者和开发者高效搭建实战环境,规避常见问题,快速验证算法或应用于实际场景。

weixin_29089057的博客 518

delphi 中locate函数的使用方法

TDataSet控件以及它的继承控件,例如TSimpleDataSet/TClientDataSet等都可以使用Locate方法在结果数据集中查寻数据。程序首先必须使用SQL命令从后端数据库中取得数据并且形成结果数据集,然后才使用Locate方法查寻数据。 当使用Locate方法查寻数据时,开发人员可以使用任何的字段条件来查寻,而无须理会这个字段是不是索引字段。当然,当开发人员使用索引字段来

云中雁012345之成长 3272

SAP 联产品测试

最近领导一直要求研究一下SAP联产品的使用场景,之前只是自己摸索过一次,这个重新对联产品进行一个测试。 1、首先准备好物料主数据 注意主数据中需要勾选联产品标识。 设置好物料的分摊的百分比。 2、检查BOM 在BOM中也需要维护联产品的标识 只有当组件数量未负数时,才能勾选联产品的标识。如果组件数量正值,勾选联产品的标识时会报错。 3、我们创建生产订单 可以看到按正常的生产订单下达时,系统就报错了,问题点在于离散制造的生产订单基本是结算到物料的。但是联产品是按订单结算的, 所以需要对订单类型中的结算参

我小时候很黑的博客 2110

物联网竞赛单片机应用开发-项目汇总

物联网竞赛单片机应用开发-项目汇总

a6662580的博客 9003

Delphi locate函数

使用ADO等数据控件的时候,经常会用到 locate 函数,在结果数据集中查询和定位,下面介绍一下: (一) function Locate(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean; Locate 方法的3个参数: 1、KeyFields 字段名称...

weixin_30746117的博客 547

家用智能监控摄像机如何使用NAS进行存储/备份(小米智能摄像机如何解决群晖 / 飞牛 NAS 识别失败、文件目录不显示问题)

小米摄像头NAS存储总出问题?🤯 别慌!本文揭秘NAS底层逻辑,群晖、飞牛实战指南。手把手教你排查解决所有难题,轻松搞定监控录像安全备份!🔒

XiaoqiangClub的博客 2696

Delphi TQuery 的Locate用法小探

今天写一个公共部件要用到TQuery.Locate方法。顺便来个小小总结。Help里的解释function Locate(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean;KeyFields: is a string containing a semicolon-deli

我心痴狂(Delphi) 4602

STM32G0/G4电机控制中三角函数与浮点运算优化实战

三角函数(sin/cos)和浮点运算是电机矢量控制(FOC)的核心基础,直接影响Clark/Park变换、SVPWM及观测器的实时性与精度。在资源受限的MCU上,标准math.h库因无硬件FPU支持而引发严重时序抖动,导致电流环延迟、转矩脉动增大甚至系统复位。通过硬件加速(如STM32G4的CORDIC协处理器)或定制化定点算法(如STM32G0的查表+线性插值),可将sin/cos计算从数十微秒压缩至1–3 μs量级,提升30倍以上效率。该方案广泛适用于BLDC/PMSM驱动、伺服控制及高动态响应嵌入式运

weixin_35751412的博客 109

【STM32+K210项目】基于K210智能人脸识别+车牌识别系统(完整工程资料源码)

随着时代的进步和科技的迅猛发展,人们对居住安全的重视程度不断提升,对安全防范系统的需求也日益增强。在安防系统中,门禁系统占据着重要的位置。传统的门禁控制方式主要依靠钥匙、密码和门禁卡等,这些方式易于被破解和复制,安全性较低。然而,近年来,生物识别技术的迅速发展和成熟,为解决这一问题提供了新的方案。生物识别技术具备便携性、非易失性、不易遗忘以及难以盗用等优点,逐渐被引入到门禁系统中。传统的小区门禁系统往往依赖人工管理,存在一定的局限性,难以满足用户多样化的需求,也浪费了人力资源。

嵌入式技术开发 1万+

Delphi TQuery 的Locate用法小探(续)

                                                                               [ By  浪子(dayichen@163.com)  At:2005.01.07 ]   874一下优快云的Blog服务器,老是出错。写了半天的文章忘了Copy,结果Post->Error->Over了。气死我了。差点把阿姨那香气喷喷的鱼

我心痴狂(Delphi) 4469

路径规划 | 图解粒子群(PSO)算法(附ROS C++仿真)

粒子群算法(PSO)的基本思想是模拟鸟群觅食机制,将鸟类的觅食方向分为自我认知部分和社会部分,个体自主探索群体周围空间的同时,也随着群体的主流方向前进,不断逼近最优目标。本文详解PSO算法基本概念,并给出ROS C++实现加深理解

FRIGIDWINTER的博客 2616

delphi locate函数的使用

loc1:= qry1.FieldbyName('SPBM').AsString;      //商品编码 loc2:= qry1.FieldbyName('XH').AsString;          //型号 qry.Locate('XH;SPBM', VarArrayOf([loc2,loc1]), [loCaseInsensitive]);          //

hansoy的专栏 9748

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Delphi通过查找字符定位TADOQuery数据的位置

通过TADOQuery的方法Locate,输入字符,查找到定位到对应的数据位置,优点快速定位,缺点是只匹配查找到的和第一个位置,无法连续定位下一个! //定位 qrymembertype.Locate('Cname', Cname, [loCaseInsensitive]); 'Cname'列名 Cname 所匹配的值 loCaseInsensitive,

Michael__mai的博客 2319

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

数据集的Locate解析

delphi数据集的Locate解析: 参数: 1. KeyFields:需要定位的字段,可为复数,以;分隔,如aa;bb 2. KeyValues: 定位的值,可以为复数,形如VarArrayOf(aa,bb) 3. Options: 附加属性,TLocateOptions类,拥有2个值:loCaseInsensitive,loPartialKey 3.1loCaseInsensitive:不区分大小写定位 3.2...

oolawokao的博客 464

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Delphi中DataSet类型组件的Locate函数的用法

Delphi中连接数据库时,DataSet类型的组件是必用滴,比如:TADOTable组件和TADOQuery组件。而这些组件的Locate函数又是个非常方便的函数,它的功能就是根据关键字定位,而它的形式是这样的: Self.ADOTable1.Locate(FieldName,Value,Option); FieldName就是字段名称,Value就是字段的值,这两个没什么好多说的,

qq_31209383的博客 3049

Delphi中AdoTable通过Locate方法快速定位记录

Delphi中AdoTable通过Locate方法快速定位记录

【昆山人在上海】 6460

多层数据库开发九:查询数据库

                                                        第九章 查询数据库  这一章介绍如何用TQuery构件查询数据库,如何通过SQL语句检索、插入、更新和删除数据。SQL是符合工业标准的关系数据库语言,既可以用于远程的基于服务器的数据库,如Sybase、Oracle、InterBase和Microsoft SQL Server,也可以用于

敦格 2554

Locate算法

<br />delphi中locate查找方法默认分类 2009-09-25 13:51:37 阅读419 评论0   字号:大中小 订阅 <br /> <br />TDataSet控件以及它的继承控件,例如TSimpleDataSet/TClientDataSet等都可以使用Locate方法在结果数据集中查寻数据。程序首先必须使用SQL命令从后端数据库中取得数据并且形成结果数据集,然后才使用Locate方法查寻数据。 <br />当使用Locate方法查寻数据时,开发人员可以使用任何的字段条件来查寻,而无

ddv_9527的专栏 912

Delphi7-TClientDataSet: 查找

TClientDataSet[12]: 查找 方法有: 1、Locate: 根据字段列表和对应的字段值查找并定位, 找到返回 True. 2、Lookup: 根据字段列表和对应的字段值查找, 返回需要的字段值. 3、SetKey、GotoKey 或 SetKey、GotoNearest: 根据索引字段的值查找, 先切换状态再根据条件定位. 4、FindKey 或 FindNearest: 根据索引...

叶炎灵的博客 1029

Delphi 数据库学习[1] TQuery 创建数据库

今天开始根据Delphi 范例自学手册学习。第一个例子弄的我太纠结了。话不多讲进入正题。 一共写了两个。这是第一个: 这是第二个。 是不是很像。对第二个比第一个少了个TDataBase组件。 书上使用的两个。当我发现他的TDataBase是个摆设。TDataBase的内容有待深究。 主要说下BDE Administrator的配置。书上没咋说。 ODBC DSN 要去 ...

weixin_34348111的博客 320

delphi locate多字段查询

简单格式: IF MSQ_NewBillQuantity.Locate('FStockID;FMarchID', VarArrayOf([FStockID, FMarchID]), []) = False then Begin //没有查询到符合条件的记录 End Else Begin //查询到符合条件的记录 End 转载于:https://www.cnblogs.com/srs...

weixin_30950607的博客 904
上一篇: elphi key值表
下一篇: 防止程序被重复执行
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值