C++ Builder中使用System.Generics.Collections
2014-11-20 12:48
148 查看
本文以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的其他几个泛型数据如
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等也可以用这种方式解决。
相关文章推荐
- 使用泛型 类型“System.Collections.Generic.IEnumerator<T>”需要 1 个类型参数
- 使用指定的比较器对整个 System.Collections.ArrayList 中的元素进行排序。
- 在Share Point 2010中,如何使用 in 语句?并且解决Boolean Contains[Int32](System.Collections.Generic.IEnumerable`1[System.Int32], Int32)的问题。
- 使用泛型 类型System.Collections.Generic.KeyValuePair需要2个类型参数
- 使用泛型类型System.Collections.Generic.Icomparer &lt;T&gt; 需要一个类型参数
- generics (范型)的使用
- 使用DLL时如何处理“System.NullReferenceException”类型的异常
- HOW TO:在 Visual C# .NET 中使用 System.Xml 合并两个 XML 文档中的数据
- 使用System.DirectoryServices.Protocols实现对AD的简单操作
- [原创]System.Collections-Array,Arraylist,HashTable和SortedList
- Dlphi7中使用system单元的问题
- 关于 在 HttpModule 中使用 System.Thread.Timer
- JDK 1.5 特性使用实例1--Generics
- System.Collections.Generic.LinkedList 学习笔记
- JDK 1.5 新功能使用实例之Generics (转)
- 在C++ Builder中使用Delphi附带的Zlib封装类
- WSS 数据库表中的 UserInfo 表中的 tp_SystemId 字段的使用
- 311530 HOW TO:在 Visual C# .NET 中使用 System.Xml 合并两个 XML 文档中的数据 (From MKBA)
- 使用system.web.mail.SMTPmail发送邮件,处理smtp验证问题
- 在Web项目开发中使用BasePage类的巧用(继承System.Web.UI.Page)