在游戏开发中经常需要保存一些数据结构,并且在使用的时候需要快速的查找出来.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博客作者fxh7622的原创作品,如需转载,请注明出处,否则将追究法律责任
职场 delphi 休闲

0

分享

微博 QQ 微信

收藏

上一篇:治病 下一篇:不更新BLOG的声明
fxh7622

110篇文章,107W+人气,8粉丝

播客链联合创始人,区块链坚定拥护者!

关注

Ctrl+Enter 发布

发布

取消

13条评论

按时间倒序 按时间正序

推荐专栏更多

微服务技术架构和大数据治理实战

大数据时代的微服务之路

共18章 | 纯洁微笑

¥51.00 669人订阅

订   阅

基于Python的DevOps实战

自动化运维开发新概念

共20章 | 抚琴煮酒

¥51.00 430人订阅

订   阅

猜你喜欢

刺猬文│从启动方式来看播客链的运行机制—设置验证者 狐狸文│区块链发展悖论 Java线程:线程的调度-休眠 我们不得不面对的中年职场危机 职场终极密籍--记我的职业生涯 用光影魔术手制作一寸照片(8张一寸) 我的IT职场生涯: 毕业4年,月薪过万 Linux关闭休眠和屏保模式 年薪从0到10万-我的IT职场经验总结 Windows7删除休眠文件hiberfil.sys节省大量C盘空间 致IT同仁 — IT人士常犯的17个职场错误 “跳槽加薪”现象,无奈的职场规则 智能合约编程语言-solidity快速入门(下) Android中适配器的notifyDataSetChanged()为何有时不刷新 如何在Spring Boot中使用Hibernate Natural ID 从hook开始聊聊那些windows内核数据结构 Scala的actor 正则性能调优 windows下kafka+ELK的日志系统 Nginx下,请求本机另外Host很慢

扫一扫,领取大礼包

0

13

分享

关注

fxh7622

转载于:https://blog.51cto.com/fxh7622/16633

Delphi中Hash表的使用方法!相关推荐

  1. 清空SQL Server数据库中所有表数据的方法(转)

    清空SQL Server数据库中所有表数据的方法 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入 ...

  2. Delphi中动态调用DLL的方法

    Delphi中动态调用dll的方法如下: function CallFunc(dllname, funcname: string; const param: array of const): DWOR ...

  3. redis将散裂中某个值自增_Redis中hash表中的field的value自增可以用hincrby

    Redis HINCRBY命令用于增加存储在字段中存储由增量键哈希的数量.如果键不存在,新的key被哈希创建.如果字段不存在,值被设置为0之前进行操作. 回复整数,字段的增值操作后的值. redis ...

  4. hash表冲突处理方法

    为提高hash表查找性能,除了考虑选择合适的hash表表长和完美的hash函数外,还必须考虑hash表处理冲突的能力.当hash函数对两个不同的数据项产生了相同的hash值时,冲突就产生了.对于冲突的 ...

  5. 教你几招HASH表查找的方法

    摘要:根据设定的哈希函数 H(key) 和所选中的处理冲突的方法,将一组关键字映象到一个有限的.地址连续的地址集 (区间) 上,并以关键字在地址集中的"象"作为相应记录在表中的存储 ...

  6. HashMap 中 hash 冲突的解决方法及原理分析

    我们最先衰老的不是容貌,而是不顾一切的闯劲.有时候,要敢于背上超出自己预料的包袱,真的努力后,你会发现自己要比想象的优秀很多. HashMap冲突的解决方法比较考验一个开发者解决问题的能力. 在Jav ...

  7. Oracle清空数据库中数据表数据的方法

    一.简介 最近在项目发版测试的时候,导出dmp的时候不小心把开发库中的一些脏数据导出来了,测试那边导入进去之后一堆不规范的数据,为了不影响测试结果,于是总结了一个快速清空数据库数据表所有数据的方法. ...

  8. ORACLE中实现表变量的方法

    经常看到SQLSERVER 中用表变量类型的方式就能做到缓存一个比较大的中间结果, 然后再对这个表变量做处理,非常方便,那么ORACLE有这种表变量的方式处理中间结果么 实验后发下你用如下方法可以起到 ...

  9. arcgis 属性表 汇总_ArcGIS实践教程(19)ArcGIS/ArcMap中属性表的合并方法

    merge: 功能一:可以联合 一般的属性表,合并属性或者说挂接属性! 例如:县polygon,只有name属性,现在需要添加他的邮编.区号.人口.面积.代码等等信息,现在搜集到了这些信息,并且放到一 ...

  10. element中form表单resetFields()方法重置表单无效

    官方文档 // 调用resetFields但没有生效 resetForm() {this.$refs['form'].resetFields(); } 解决: form里需要ref 表单项el-for ...

最新文章

  1. mysql数据库备份、恢复文档
  2. 时区日期处理及定时 (NSDate,NSCalendar,NSTimer,NSTimeZone)
  3. 2021,我在枯燥乏味中寻找坚持下去的理由
  4. 使用AWS Lambda,S3和AWS CloudFront进行动态内容缓存
  5. RNN Attention
  6. 新建pch文件及配置
  7. InnoTek VirtualBox – 很有潜力的OS模拟器
  8. 怎么清理ug10注册表_注册表清理优化工具用它就够了,赶紧上车!
  9. kail linux镜像文件,KaLi Linux iso下载_KaLi Linux官方镜像文件下载 2018.3 官网最新版(32位/64位)_当载软件站...
  10. 计算机领域sci,计算机类SCI前三区期刊
  11. 三调数据库标注插件v1.3
  12. 孩子必听的数学家故事——笛卡尔
  13. 学习Android studio 个人总结小经验
  14. 数据结构--链表概念及常见链表结构
  15. 美化牙齿的几大方式,护牙剂省钱省力
  16. B站李永乐讲解傅里叶变换--笔记
  17. hdu 4745 区间dp
  18. 【渝粤题库】国家开放大学2021春1040公司概论题目
  19. 用mysql+php开发网上商城系统
  20. Excel2007中固定表头或列

热门文章

  1. Java构造器(构造方法)与方法区别
  2. Codeforces Round #580 (Div. 1)(CF1205)A-E
  3. Beta阶段第1周/共2周 Scrum立会报告+燃尽图 03
  4. jmeter无法启动的解决办法
  5. WPF太阳、地球、月球运动轨迹模拟
  6. 20180330试试水
  7. iOS开发——策略模式
  8. UVa 10870 - Recurrences 矩阵快速幂
  9. 089 重用父类方法的两种方式
  10. Java开发笔记(一百三十六)JavaFX的窗格