Delphi中Hash表的使用方法!

简介:
在游戏开发中经常需要保存一些数据结构,并且在使用的时候需要快速的查找出来.Hash表正是为了提高检索速度而设计出来的.下面我就将我在用Delphi开发中使用Hash表的方法写出来,希望对大家有一定的帮助!
在Delphi中有一个THashedStringlist类,使用这个类可以实现Hash表的操作.使用这个类需要引用IniFiles头文件.
例如:我们定义的数据结构是:
RTest = record
  Key:Integer;
  Name:String[20];
  Sex:Boolean;
  Age:Integer;
end;
PTest = ^RTest ;
1:创建Hash表.
ScHash:=THashedStringlist.Create;
2:将数据结构加入Hash表中.
var
 Index:Integer; 
 p_Test:PTest;
 Index:=ScHash.IndexOf(IntToStr(p_Test.Key));
    if Index=-1 then
    begin
      ScHash.AddObject(IntToStr(p_Test.Key),TObject(Integer(p_Test)));
    end;
在加入Hash表的时候,首先我们检查看这个Key是否在Hash表中,如果Index=-1则说明此Key不在Hash表中,则我们将这个结构指针加入到Hash表中.
3:将数据结构从Hash表中删除.
var
 Index:Integer;
 t_Object: TObject;
 Index:=ScHash.IndexOf(IntToStr(p_Test.Key));
    if Index<>-1 then
    begin
      t_Object:=ScHash.Objects[Index];
      ScHash.Delete(Index);
    end;
4:删除Hash表
在删除Hash表的时候和一般的Tlist删除一样,使用Free.
  ScHash.Free;
以上就是简单的Hash表操作步骤,其中需要注意的是,在使用DELPHI7的使用hash表的时候,一定要安装补丁.
本文转自狗窝博客51CTO博客,原文链接http://blog.51cto.com/fxh7622/16633如需转载请自行联系原作者

fxh7622
相关文章
|
Web App开发 前端开发
ZLMediaKit解决webrtc前端replaceTrack断流问题
ZLMediaKit解决webrtc前端replaceTrack断流问题
|
存储 网络协议 Java
网络通信的核心机制:Socket如何实现高效数据传输(上)
网络通信的核心机制:Socket如何实现高效数据传输
西门子S7-1200的转换指令、取整和截取指令、上取整和下取整指令、标定和标准化指令,各参数的含义是什么?
西门子S7-1200中的转换指令包括转换指令、取整和截取指令、上取整和下取整指令、标定和标准化指令。
西门子S7-1200的转换指令、取整和截取指令、上取整和下取整指令、标定和标准化指令,各参数的含义是什么?
|
6月前
|
机器学习/深度学习 自然语言处理 前端开发
国内快递地址解析技术的工作原理详解
随着电商和快递行业快速发展,非结构化地址问题日益突出,如字段混杂、拼写错误等,传统方式难以高效处理。为此,探数平台推出基于NLP和地理信息的快递地址解析API,可将原始地址文本解析为标准结构化字段(如省、市、区、街道等),并支持收件人姓名与电话提取。 技术上,该API采用深度学习模型(如BERT、BiLSTM)进行语义理解,结合地址知识图谱实现纠错与补全。服务支持SaaS调用或私有化部署,性能稳定,适用于各类前端场景。通过地址结构化处理,企业可显著提升订单处理效率,减少配送错误,优化用户体验,助力全链路智能化升级。无论是电商平台还是物流系统,均可从中受益。
465 0
|
芯片
stm32f407探索者开发板(十二)——Systick滴答定时器-延时函数讲解
stm32f407探索者开发板(十二)——Systick滴答定时器-延时函数讲解
1333 0
|
机器学习/深度学习 数据采集 分布式计算
【机器学习】XGBoost: 强化学习与梯度提升的杰作
在机器学习的广阔领域中,集成学习方法因其卓越的预测性能和泛化能力而备受瞩目。其中,XGBoost(Extreme Gradient Boosting)作为梯度提升决策树算法的杰出代表,自其诞生以来,便迅速成为数据科学竞赛和工业界应用中的明星算法。本文旨在深入浅出地介绍XGBoost的核心原理、技术优势、实践应用,并探讨其在模型调优与解释性方面的考量,为读者提供一个全面且深入的理解框架。
690 2
|
存储 SQL 关系型数据库
(二十一)MySQL之高并发大流量情况下海量数据分库分表的正确姿势
从最初开设《全解MySQL专栏》到现在,共计撰写了二十个大章节详细讲到了MySQL各方面的进阶技术点,从最初的数据库架构开始,到SQL执行流程、库表设计范式、索引机制与原理、事务与锁机制剖析、日志与内存详解、常用命令与高级特性、线上调优与故障排查.....,似乎涉及到了MySQL的方方面面。但到此为止就黔驴技穷了吗?答案并非如此,以《MySQL特性篇》为分割线,整个MySQL专栏从此会进入“高可用”阶段的分析,即从上篇之后会开启MySQL的新内容,主要讲述分布式、高可用、高性能方面的讲解。
886 1
|
存储 关系型数据库 MySQL
MySQL分区表:万字详解与实践指南
MySQL分区表:万字详解与实践指南
用人话讲懂memcmp函数的理解和使用
用人话讲懂memcmp函数的理解和使用