利用StringList对象来管理这些动态生成的对象

如果程序需要动态创建大量的对象,那么我们可以利用StringList对象来管理这些动态生成的对象。
1、创建StringList对象:
OBJ := TStringList.Create;

2、保存动态生成的对象:
OBJ.AddObject(‘标识‘,‘对象名‘);

3、调用生成的对象:
(OBJ.Objects[序号/OBJ.IndexOf(‘标识‘)] as 对象类型).方法或属性
或:
对象类型(OBJ.Objects[序号/OBJ.IndexOf(‘标识‘)]).方法或属性

4、释放动态生成的对象:
(OBJ.Objects[序号/OBJ.IndexOf(‘标识‘)] as 对象类型).Free;
对象类型(OBJ.Objects[序号/OBJ.IndexOf(‘标识‘)]).Free;

释放对象后记得要删除StringList里对应的记录:
OBJ.Delete(序号/OBJ.IndexOf(‘标识‘));

5、StringList的释放:
if Assigned(OBJ) then OBJ.Free;

---------------------------------------------------

正常来说是要先释放(TObject(ts.Items[i]).Free)再删除,最后才是ts.free

for i:=0 to StringList.Count-1 do  
    begin  
      StringList.Objects[i].Free;  
    end;  
    if StringList<>nil then  
    FreeAndNil(StringList);

==========================

时间: 2024-08-27 19:40:17

利用StringList对象来管理这些动态生成的对象的相关文章

C++实现根据类名动态生成类对象

在开发后台服务的过程中,我们常常需要从数据库中取数据,并将数据缓存在本地中,另外,我们的服务还需要有更新数据的能力:包括定时的主动更新以及数据库数据更新时服务收到通知的被动更新. 之前在需要用到以上功能的时候,模仿着组内通用的数据Cache部分的代码来写,十分方便,基本上只需要自己写两个类:一个是取数据并缓存数据的类XXXData,一个是扇出数据的类XXXFetcher. 在需要使用数据的时候,通过: FetcherFactory::getFetcher<XXXFetcher>() 即可获取一

JS 动态生成JSON对象

JS 动态生成JSON对象,一般用到JSON传递参数的时候,会用到. function onGeneratedRow(columnsResult) { var jsonData = {}; columnsResult.forEach(function(column) { var columnName = column.metadata.colName; jsonData[columnName] = column.value; }); viewData.employees.push(jsonDat

创建一个接口Shape,其中有抽象方法area,类Circle 、Rectangle实现area方法计算其面积并返回。又有Star实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型方法isStar;在main方法里创建一个Vector,根据随机数的不同向其中加入Shape的不同子类对象(如是1,生成Circle对象;如是2,生成Rectangle对象;如是3,生成S

题目补充: 创建一个接口Shape,其中有抽象方法area,类Circle .Rectangle实现area方法计算其面积并返回. 又有Star实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型方法isStar: 在main方法里创建一个Vector,根据随机数的不同向其中加入Shape的不同子类对象(如是1,生成Circle对象: 如是2,生成Rectangle对象:如是3,生成Star对象).然后将Vector中元素依次取出,判断其是否为Star类.如是返回其

利用jquery.ajax在jsp页面动态生成table,可以增加修改,并支持一行和多行删除

声明:此为本人原创,只想实现功能,界面样式方面没多考虑,很粗糙能看懂就行--2018-5-14 动态生成table,我利用jsp内嵌java代码从后台获取对象集合,输出的时候有2中方法 1.直接利用java代码for(b1 b:bs)输出 2.利用JSTL标签库的c:foreach输出 不同之处在于,利用c:foreach输出要把获取的对象集合加入到request,然后用${}来读取,而for(b1 b:bs)可以直接输出. 第一种方法--for(b1 b:bs)输出<table id="

动态代理 -- 不用手动编写一个代理对象,不需要编写与目标对象相同的方法,在运行时内存中动态生成代理对象。

动态代理创建的核心代码: TargetInterface objProxy = (TargetInterface) Proxy.newProxyInstance( Target.class.getClassLoader(),//与目标对象相同的类加载器 new Class[]{TargetInterface.class}, new InvocationHandler() { @Override //proxy 即该代理对象 //method 代理对象的方法,里面封装这接口中的所有方法 //arg

mybatis-generator 动态生成实体对象、dao 以及相关的xml映射文件

.新建maven空项目 2.修改pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mave

Jquery给动态生成的对象绑定事件

$(document).on("blur", ".Text1", function () { var index = this.id.replace('txtStandard', '') var item = $("#items" + index).html(); //获取验收项目 var productType = $("#Select1").val(); //产品类别 var fid = $("#FID"

构建施耐德楼控系统数据库后台服务器示例工程五(JAVA动态生成类)

在做数据库简易工具的过程中遇到了这么一个问题,即程序部署在tomcat下启动运行后,我们无法事先定义数据库中后续创建的表结构的Hibernate Bean对象,这样就需要我们在服务器运行起来后动态创建bean对象.cglib这个开源库即可解决我们的问题,动态创建JAVA对象. 1.cglib开源库简介 CGLIB(Code Generation Library)是一个开源项目,是一个强大的,高性能,高质量的Code生成类库,它可以在运行期扩展Java类与实现Java接口. 反编译后CGLIB结构

模拟Hibernate动态生成SQL语句

这里有一个xml配置文件,也就是Hibernate框架中会用到的POJO和数据库的映射文件 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://www.hibernate.org/dtd/hibernate-