TDictionary字典 对象的释放。。。
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字典 对象的释放。。。的更多相关文章
- VBS使用Scripting.Dictionary字典对象
Scripting.Dictionary是个很有用的组件,其创建了类似于Key索引对应Value值的字典对象,并且在其内部提供了快速索引访问的机制,可以让我们通过Key直接索引到指定的Value,比遍 ...
- 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 ...
- java 哪些情况下会使对象锁释放
Java_多线程_锁释放 问:Java多线程运行环境中,在哪些情况下会使对象锁释放?答:由于等待一个锁的线程只有在获得这把锁之后,才能恢复运行,所以让持有锁的线程在不再需要锁的时候及时释放锁是很重要的 ...
- JavaScript中创建字典对象(dictionary)实例
这篇文章主要介绍了JavaScript中创建字典对象(dictionary)实例,本文直接给出了实现的源码,并给出了使用示例,需要的朋友可以参考下 对于JavaScript来说,其自身的Array对象 ...
- GDI 对象的释放与内存泄漏的问题研究
最近写了一个GDI 绘图的程序,过程中遇到一个奇怪的问题,就是 定时器定时一会GDI绘的图就消失了..后来经过分析,原来是 GDI对象数量过多 ,即GDI对象超过10000个 导致内存泄漏的问题.找到 ...
- Objective-c 字典对象
oc 中的 NSDictionary 的作用同 java 中的字典类相同,提供了 “键-值”对的组合.比如,是用字典类实现对学生姓名和学号的存放,编号是一个键(唯一性),姓名是值.它的方法有: 下面通 ...
- C#+ArcEngine中com对象的释放问题
1.问题描述 最近在写C#下AE的开发,在循环获取数据并修改时碰到了两个问题"超出系统资源"和"超出打开游标最大数":在网上看了一些资料,发现都是说在循环中没有 ...
- python爬虫requests json与字典对象互相转换
import requests import json ''' json.loads(json_str) json字符串转换成字典 json.dumps(dict) 字典转换成json字符串 ''' ...
- 有一个字典对象,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 ...
随机推荐
- 解决Linux使用php命令 -base comment not found并安装composer
获取php的安装目录 使用 find / -name php.ini 查看php的安装位置 /usr/local/php/lib/php.ini # cd 到/usr/local/php/lib/ph ...
- 微信小程序第3课 目录结构及小知识点
目录 目录结构 安装包下载地址 一.pages目录介绍 二.index目录介绍 index.js(相当JavaScript文件,必不可少的) index.json(可以不需要) index.wxml( ...
- Java堆内存又溢出了!教你一招必杀技
JAVA堆内存管理是影响性能主要因素之一.堆内存溢出是JAVA项目非常常见的故障,在解决该问题之前,必须先了解下JAVA堆内存是怎么工作的. 先看下JAVA堆内存是如何划分的,如图: JVM内存划分为 ...
- 添加SQL字段
通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数增加字段: alter table [表名] add 字段名 smallin ...
- momo不是玩具,.Net雄起
互联网时代 .NET 会渐渐衰落吗?一个架构师对 .NET 的思考 2015-12-14 11:03 darklx 博客园 字号:T | T 为了更好的适应互联网时代的需求,我们公司已经把我们的 .N ...
- MySQL之索引(二)
高性能的索引策略 正确地创建和使用索引是实现高性能查询的基础.在MySQL之索引(一)这一章中我们介绍了各种类型的索引及其对应的优缺点.现在我们一起来看看如何真正地发挥这些索引的优势. 独立的列 我们 ...
- daily algorithm 判断链表是否有环
public static boolean isLoopLink(ListNode head) { if (head == null) { return false; } ListNode fast ...
- Eclipse安装MAT插件
MAT(Memory Analyzer Tool) 是基于heap dumps来进行分析的,它的分析速度比jhat快,分析结果是图形界面显示,比java内置jhat的可读性更高 通过Eclipse市场 ...
- 判断 js 数组是否为 empty
function isEmpty(obj) { for(var key in obj) { if(obj.hasOwnProperty(key)) return false; } return tru ...
- POJ 3368:Frequent values(线段树区间合并)
题目大意,给出一段非降序列,求一些区间中出现频率最高的数的出现次数. 分析: 显然,区间中一个数多次出现必然是连续的,也就是最长的连续相等的一段. 用线段树解决,维护三个信息:一个区间最长连续的区间的 ...