C++ Builder中使用System.Generics.Collections

来源:互联网 发布:模考软件 编辑:程序博客网 时间:2024/05/21 17:00

      本文以TList<T>为例介绍如何在C++Builder中使用System.Generics.Collections提供的类及方法,在C++Builder中使用System.Generics.Collections分两种情况。

 1、对于基本数据类型C++Builder,使用System.Generics.Collections与DELPHI没有什么差别。例如TList<int>,使用在使用单元前要首先引用System.Generics.Collections.hpp头文件。

 #include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#include <System.Generics.Collections.hpp>/*这个头文件必须引用*/
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;

  在这个例子中我定义了一个TList<int>类型的数据,定义编译后正常。向TList<int> 列表中添加内容与DELPHI的区别是DELPHI直接调用TList<T>的Add方法。而C++Builder是调用的TList<T>Items的Add成员函数。而定义TList<int>C++Builder与DELPHI是有区别, DELPH直接定义为TList<int> ,而C++Builder定义为TList__1<int>现将C++Builder的程序代码复制如下:

void __fastcall TForm2::Button1Click(TObject *Sender)
{
TList__1<int> *ilist=new TList__1<int>(); //声明一下TList<int>变量
for (int i = 0; i < 10; i++) {    //向TList添加成员
ilist->Add(i);
}
ilist->Remove(8);//移除一个TList<int>成员,其中移除指定成员
ilist->Delete(0);//移除TList<int>中指定索引成员,该例子是删除ilist列表的第一个成员
ilist->Clear();//删除ilist中的所有成员
}

按照上面的程序写法编译不会出现问题,若是非基本数据类型的列表,在C++Builder中使用会出现编译错误:例如若想定义一个String列表那么在C++Builder中会编译错误。



是不是在C++Builder中,非基本数据类型就不能使用TList<T>的呢。答案是肯定。那么如何能让非基本数据类型使用TList呢,需要有使用前创建一个DELPHI程序单元,在DLPHI程序单元中定义一个类,定义格式如下:

 type

  TSlist=class(TList<string>)
end;

并将此这个程序单元引用到使用TList<String>数据类型的单元中,引用后的程序头文件如下:


这样就解决了TList列表不能在C++Builder使用的问题。依次类推System.Generics.Collections的其他几个泛型数据如

TDictionary等也可以用这种方式解决。


0 0
原创粉丝点击