type TRen = record
name: string;
age: Integer;
end; type TPeople = class
private
Fname: string;
Fage: Integer;
procedure Setname(const Value: string);
procedure Setage(const Value: Integer);
published
property name: string read Fname write Setname;
property age: Integer read Fage write Setage;
end; procedure TForm3.Button1Click(Sender: TObject);
var
MyRen: TRen;
MyDic: TDictionary<string,TRen>;
I: Integer;
MyKeyAry: TArray<string>;
MyRen2: TRen;
begin
MyDic := TDictionary<string,TRen>.Create();
try
//---------------------------------------
for I := to do
begin
MyRen.name := '群主'+IntToStr(I);
MyRen.age := I;
MyDic.Add('key'+IntToStr(I),MyRen);
end; //---------------------------------------
MyKeyAry := MyDic.Keys.ToArray;
for I := to MyDic.Count- do
begin
MyRen2 := MyRen;
MyRen2.name := '操蛋'+IntToStr(I);
MyDic.AddOrSetValue(MyKeyAry[I],MyRen2);
end; ShowMessage(MyDic['key1'].name);
finally
MyDic.Free;
end;
end; { TPeople } procedure TPeople.Setage(const Value: Integer);
begin
Fage := Value;
end; procedure TPeople.Setname(const Value: string);
begin
Fname := Value;
end; procedure TForm3.Button2Click(Sender: TObject);
var
MyPeople: TPeople;
MyDic: TObjectDictionary<string,TPeople>;
I: Integer;
MyKeyAry: TArray<string>;
begin
MyDic := TObjectDictionary<string,TPeople>.Create();
try
//---------------------------------------
for I := to do
begin
MyPeople := TPeople.Create;
MyPeople.name := '群主'+IntToStr(I);
MyPeople.age := I;
MyDic.Add('key'+IntToStr(I),MyPeople);
end; //---------------------------------------
MyKeyAry := MyDic.Keys.ToArray;
for I := to MyDic.Count- do
begin
//这里如果是结构就不能这样赋值,如果是对象就可以.
MyDic[MyKeyAry[I]].name := '操蛋'+IntToStr(I);
end; //---------------------------------------
//窗体显示
ShowMessage(MyDic['key1'].name); //---------------------------------------
//用这种方式释放吧,不搞了,以后就用这种方式来.
for I := to MyDic.Count- do
begin
MyDic[MyKeyAry[I]].Free;
end;
finally
MyDic.Free;
end;
end;

TDictionary字典 对象的释放。。。的更多相关文章

  1. VBS使用Scripting.Dictionary字典对象

    Scripting.Dictionary是个很有用的组件,其创建了类似于Key索引对应Value值的字典对象,并且在其内部提供了快速索引访问的机制,可以让我们通过Key直接索引到指定的Value,比遍 ...

  2. python 基础学习(字典对象,set对象)

    1.dict 字典对象 a.定义对象 d={'a':14,'b':12}b.通过key获取value d['a'] 方法1.判断key是否存在 if 'a' in d: d['a']方法2:通过用ge ...

  3. java 哪些情况下会使对象锁释放

    Java_多线程_锁释放 问:Java多线程运行环境中,在哪些情况下会使对象锁释放?答:由于等待一个锁的线程只有在获得这把锁之后,才能恢复运行,所以让持有锁的线程在不再需要锁的时候及时释放锁是很重要的 ...

  4. JavaScript中创建字典对象(dictionary)实例

    这篇文章主要介绍了JavaScript中创建字典对象(dictionary)实例,本文直接给出了实现的源码,并给出了使用示例,需要的朋友可以参考下 对于JavaScript来说,其自身的Array对象 ...

  5. GDI 对象的释放与内存泄漏的问题研究

    最近写了一个GDI 绘图的程序,过程中遇到一个奇怪的问题,就是 定时器定时一会GDI绘的图就消失了..后来经过分析,原来是 GDI对象数量过多 ,即GDI对象超过10000个 导致内存泄漏的问题.找到 ...

  6. Objective-c 字典对象

    oc 中的 NSDictionary 的作用同 java 中的字典类相同,提供了 “键-值”对的组合.比如,是用字典类实现对学生姓名和学号的存放,编号是一个键(唯一性),姓名是值.它的方法有: 下面通 ...

  7. C#+ArcEngine中com对象的释放问题

    1.问题描述 最近在写C#下AE的开发,在循环获取数据并修改时碰到了两个问题"超出系统资源"和"超出打开游标最大数":在网上看了一些资料,发现都是说在循环中没有 ...

  8. python爬虫requests json与字典对象互相转换

    import requests import json ''' json.loads(json_str) json字符串转换成字典 json.dumps(dict) 字典转换成json字符串 ''' ...

  9. 有一个字典对象,d = {'a':1,'b':2},请用尽量简洁的代码将d转换成{1: 'a', 2: 'b'}

    题目:有一个字典对象,d = {'a':1,'b':2},请用尽量简洁的代码将d转换成{1: 'a', 2: 'b'} 第一种方法: d = {'a': 1, 'b': 2}d = {value: k ...

随机推荐

  1. unity安装记录

    官网直接下载(http://unity3d.com/cn/) 下载完后,会要求输入账号密码.我是先在官网进行一个账号注册,然后登陆即可. 首先会要你输入一个已有的邮箱,进行认证.进入自己邮箱,点击链接 ...

  2. git上传自己的代码

    感谢这个哥们的博客,不过里面有些错误. http://www.cnblogs.com/ruofengzhishang/p/3842587.html 下面是我自己的实践成功的: 这篇文章写得是windo ...

  3. Java多线程-join方法

    thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程.比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B. 具体例子看链接 ...

  4. C#入门篇6-1:字符串操作 char常用的函数

    //char 字符的常见操作 public static void FChar() { //判定字符的类别 char ch1 = 'a';//使用小引号 bool bl = true; bl = ch ...

  5. [转]Linux 技巧:让进程在后台可靠运行的几种方法

    转自: https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/index.html 我们经常会碰到这样的问题,用 telnet/ssh 登录了远 ...

  6. 6个超实用的PHP代码片段

    一.黑名单过滤 function is_spam($text, $file, $split = ':', $regex = false){ $handle = fopen($file, 'rb'); ...

  7. Android EditText默认不弹出输入法,以及获取光标,修改输入法Enter键的方法

    一.Android EditText默认不弹出输入法的办法:1. 在AndroidManifest.xml中将需要默认隐藏键盘的Activity中添加属性即可(常用此方法) android:windo ...

  8. BZOJ 1087:[SCOI2005]互不侵犯King(状压DP)

    [SCOI2005]互不侵犯King [题目描述] 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子 ...

  9. 【bzoj1316】树上的询问 树的点分治+STL-set

    题目描述 一棵n个点的带权有根树,有p个询问,每次询问树中是否存在一条长度为Len的路径,如果是,输出Yes否输出No. 输入 第一行两个整数n, p分别表示点的个数和询问的个数. 接下来n-1行每行 ...

  10. 修改host文件实现自定义域名和iis站点本地调试

    修改host文件实现自定义域名和iis站点本地调试 自定义域名:myhost.com windows版本:win7 iis版本:iis7.x vs版本:vs2010 现在开始动手设置了: 一.修改ho ...