gdal中的mem用在多线程的时候可以吗

gdal中的mem用在多线程的时候可以吗,第1张

是的,kbmmemtable 100%线程。

有几种方法可以从多个线程访问存储表:

1)有一个包含数据库kbmmemtable。然后在每个线程附加到另一个基地kbmmemtable tkbmmemtable。该线程将有他们自己的光标进入基地MemTable中,这意味着他们可以排序和索引,和滤波器等完全相互独立。

2)让每一个线程做山锁之前使用它,和山。这使得 *** 作不会被另一个线程中断。如太追加;mtfields […]:=…;后山是3个步骤。例如如果另一个线程做太取消这3个步骤中,无论是mtfields…或太后将失败,因为该数据集的异常突然不再在编辑模式。

kbmmemtable不会崩溃,因为这(因为其内部_is_线程)但是程序不会像预期的那样。因此,在附加语句和一个附加语句之前先放一个山。

关于内存表的使用说明

一、 Delphi使用内存表

11 Delphi创建内存表步骤:

1. 创建一个Ttable实例。

2. 设置一个DataBaseName为一个目录或是已有的数据库别名。

3. 指定TableName的值。

4. 设置TableType属性指明要创建的数据库表类型。(如果此属性为ttDefault表示数据库类型与TableName指定值的扩展名对应)。

5. 调用TTableFidldDefs对象的Add方法向数据库表中添加字段。Add有4个参数:

字段名:string。

字段类型:TfieldType。

字段大小:Word。一般只对String和Memo类型使用。

字段是否NotNull: Boolean。

6. 使用TTableIndexDefsAdd()方法定义索引。Add有三个参数:

索引名:string;

索引字段名:string;

索引类型:TIndexOptions;

7. 调用TTable的CreateTable。这种方法适用于本地表。SQL表要用TQuery来创建。

代码如下:

var

MemTable: TTable;

begin

with MemTableCreate(Self) do

begin

DatabaseName := 'c:\Temp ';

TableName := 'Test ';

TableType := ttParadox;

with FieldDefs do

begin

Add( 'Age ', ftInteger, 0, True);

Add( 'Name ', ftString, 25, False);

Add( 'Weight ', ftFloat, 0, False);

end;

IndexDefsAdd( ' ', 'Age ', [ixPrimary, ixUnique]);

CreateTable;

end;

end;

二、 kbmMemTable使用简述

21 kbmMemTable创建步骤:

1. 创建一个kbmMemTable对象实例。

2. 调用kbmMemTableFidldDefs对象的Add方法向数据库表中添加字段。Add的方法和Delphi相同。

3. 使用kbmMemTableIndexDefsAdd()方法定义索引。Add的方法和Delphi相同。

4. 调用kbmMemTable的CreateTable。

重要的区别:因为kbmMemTable不需要BDE的支持。所以不要指明DatabaseName, TableName和TableType三个属性。

代码如下:

with kbmMemTable1 do

begin

with kbmMemTable1FieldDefs do

begin

Clear;

Add( 'Period ', ftInteger, 0, false);

Add( 'VALUE ', ftLargeInt, 0, false);

Add( 'BytesField ', ftBytes, 20, false);

Add( 'Color ', ftInteger, 0, false);

Add( 'Date ', ftDate, 0, false);

Add( 'Memo ', ftMemo, 0, false);

Add( 'AutoInc ', ftAutoInc, 0, false);

end;

with kbmMemTable1IndexDefs do

begin

Clear;

Add( 'Index1 ', 'VALUE ', []);

end;

CreateTable;

end;

三、与Delphi创建内存表的对比

31主从表功能

kbmMemTable可以象其它TDataSet一样,通过设置MasterSource和MasterField来简单的完成主从表的 *** 作。

32 SQL功能

没有发现kbmMemTable可以支持SQL语句的 *** 作。它提供按字段排序和对排序字段的查找功能。

三、 kbmMemTable特点

从其它TDataSet得到数据。

代码如下:

LoadFromDataSet(Table1, [mtcpoStructure, mtcpoProperties]);

这样kbmMemTable就完全得到来自一个DataSet对象中的全部数据

保存和载入内存表中数据的功能

Delphi的TTable不提供SaveToFile功能。

kbmMemTable提供保存到文件的功能,保存的文件有两种格式:

Options: TkbmMemTableSaveFlags;

1. 二进制格式。kbmMemTableSaveToBinaryFile( 'c:\testbin ', Options)

kbmMemTable1LoadFromBinaryFile( 'c:\testbin ')

2. csv格式。kbmMemTableSaveToFile( 'c:\testcsv ', Options);

kbmMemTable1LoadFromFile( 'c:\testcsv ')

(一种Excel支持的文档格式)打开后的内容如下:

@@FILE VERSION@@ 200

@@TABLEDEF START@@

Period=Integer,0, "Period ", " ",10

VALUE=LargeInt,0, "VALUE ", " ",15

BytesField=Bytes,20, "BytesField ", " ",10

Color=Integer,0, "Color ", " ",10

Date=Date,0, "Date ", " ",10

Memo=Memo,0, "Memo ", " ",10

AutoInc=AutoInc,0, "AutoInc ", " ",10

CALC=String,20, "CALC ", " ",20

@@TABLEDEF END@@

Period VALUE BytesField Color Date Memo AutoInc CALC

1 198 0 02/11/2001 This is a memo%n2001-11-2 10:19:52 1 0 1-二月

2 196 3 03/11/2001 This is a memo%n2001-11-2 10:19:52 2 1 2-三月

在文档的头部份描述了表的字段结构,在下面则是数据区域。

关于内存表的使用(kbmMemTable)

关于内存表的使用说明 一、 Delphi使用内存表 11 Delphi创建内存表步骤: 1. 创建一个Ttable实例。 2. 设置一个DataBaseName为一个目录或是已有的数据库别名。 3. 指定TableName的值。 4.设置TableType属性指明要创建的数据库表类型。(如果此属性为ttDefault表示数据库类型与TableName指定值的扩展名对应)。 5. 调用TTableFidldDefs对象的Add方法向数据库表中添加字段。Add有4个参数: 字段名:string。 字段类型:TfieldType。 字段大小:Word。一般只对String和Memo类型使用。 字段是否NotNull: Boolean。 6. 使用TTableIndexDefsAdd()方法定义索引。Add有三个参数: 索引名:string; 索引字段名:string; 索引类型:TIndexOptions; 7. 调用TTable的CreateTable。这种方法适用于本地表。SQL表要用TQuery来创建。 代码如下: var MemTable: TTable; begin with MemTableCreate(Self) do begin DatabaseName := 'c:\Temp'; TableName := 'Test'; TableType := ttParadox; with FieldDefs do begin Add('Age', ftInteger, 0, True); Add('Name', ftString, 25, False); Add('Weight', ftFloat, 0, False); end; IndexDefsAdd('', 'Age', [ixPrimary, ixUnique]); CreateTable; end; end; 二、 kbmMemTable使用简述 21 kbmMemTable创建步骤: 1. 创建一个kbmMemTable对象实例。 2. 调用kbmMemTableFidldDefs对象的Add方法向数据库表中添加字段。Add的方法和Delphi相同。 3. 使用kbmMemTableIndexDefsAdd()方法定义索引。Add的方法和Delphi相同。 4. 调用kbmMemTable的CreateTable。 重要的区别:因为kbmMemTable不需要BDE的支持。所以不要指明DatabaseName, TableName和TableType三个属性。 代码如下: with kbmMemTable1 do begin with kbmMemTable1FieldDefs do begin Clear; Add('Period', ftInteger, 0, false); Add('VALUE', ftLargeInt, 0, false); Add('BytesField', ftBytes, 20, false); Add('Color', ftInteger, 0, false); Add('Date', ftDate, 0, false); Add('Memo', ftMemo, 0, false); Add('AutoInc', ftAutoInc, 0, false); end; with kbmMemTable1IndexDefs do begin Clear; Add('Index1', 'VALUE', []); end; CreateTable; end; 三、与Delphi创建内存表的对比 31主从表功能 kbmMemTable可以象其它TDataSet一样,通过设置MasterSource和MasterField来简单的完成主从表的 *** 作。 32 SQL功能 没有发现kbmMemTable可以支持SQL语句的 *** 作。它提供按字段排序和对排序字段的查找功能。 三、 kbmMemTable特点 从其它TDataSet得到数据。 代码如下: LoadFromDataSet(Table1, [mtcpoStructure, mtcpoProperties]); 这样kbmMemTable就完全得到来自一个DataSet对象中的全部数据 保存和载入内存表中数据的功能 Delphi的TTable不提供SaveToFile功能。 kbmMemTable提供保存到文件的功能,保存的文件有两种格式: Options: TkbmMemTableSaveFlags; 1. 二进制格式。kbmMemTableSaveToBinaryFile('c:\testbin', Options) kbmMemTable1LoadFromBinaryFile('c:\testbin') 2. csv格式。kbmMemTableSaveToFile('c:\testcsv', Options); kbmMemTable1LoadFromFile('c:\testcsv') (一种Excel支持的文档格式)打开后的内容如下: @@FILE VERSION@@ 200 @@TABLEDEF START@@ Period=Integer,0,"Period","",10 VALUE=LargeInt,0,"VALUE","",15 BytesField=Bytes,20,"BytesField","",10 Color=Integer,0,"Color","",10 Date=Date,0,"Date","",10 Memo=Memo,0,"Memo","",10 AutoInc=AutoInc,0,"AutoInc","",10 CALC=String,20,"CALC","",20 @@TABLEDEF END@@ Period VALUE BytesField Color Date Memo AutoInc CALC 1 198 0 02/11/2001 This is a memo%n2001-11-2 10:19:52 1 0 1-二月 2 196 3 03/11/2001 This is a memo%n2001-11-2 10:19:52 2 1 2-三月 在文档的头部份描述了表的字段结构,在下面则是数据区域 以下代码用ClientDataSet建立内存表,包含Field1和Field2两个字段,在Field1上建索引: with ClientDataSet1 do begin //添加Integer类型的字段Field1 with FieldDefsAddFieldDef do begin DataType := ftInteger; Name := 'Field1'; end; //添加string类型的字段Field2 with FieldDefsAddFieldDef do begin DataType := ftString; Size := 10; Name := 'Field2'; end; //在Field1上建索引 with IndexDefsAddIndexDef do begin Fields := 'Field1'; Name := 'IntIndex'; end; //创建内存表 CreateDataSet; end

》》》》》》》》》》》》》》》》》

KbmMemTable是一款高效且强大的内存表控件,内存表顾名思义其最大的优势就是速度,KbmMemTable不仅完美地实现了高效的特征,同时,最新版本还支持索引、SQL语句等高级用法。其用法超简单,基本用法和ClientDataSet一致,以下是我简单的应用示例,实现了增删改查等基本功能:

Delphi <wbr>: <wbr>kbmMemTable关于内存表的使用

unit Unit1

interface

use

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, DBGrids, DB, StdCtrls, kbmMemTable

type

TForm1 = class(TForm)

Button1: TButto

DataSource1: TDataSource

DBGrid1: TDBGrid

Button2: TButto

Button3: TButto

Button4: TButto

Button5: TButto

Button6: TButto

Button7: TButto

rocedure Button1Click(Sender: TObject)

rocedure FormCreate(Sender: TObject)

rocedure Button2Click(Sender: TObject)

rocedure Button4Click(Sender: TObject)

rocedure Button3Click(Sender: TObject)

rocedure Button5Click(Sender: TObject)

rocedure Button6Click(Sender: TObject)

rocedure Button7Click(Sender: TObject)

rivate

{ Private declarations }

ublic

{ Public declarations }

end

var

Form1: TForm1

kbmMemTable1 : TkbmMemTable

Id:Integer

implementatio

{$R dfm}

rocedure TForm1Button1Click(Sender: TObject)

egi

//建表

kbmMemTable1FieldDefsClear

kbmMemTable1FieldDefsAdd('Id', ftInteger, 0, False)

kbmMemTable1FieldDefsAdd('Value', FtString, 20, False)

kbmMemTable1FieldDefsAdd('Time', ftDateTime, 0, False)

kbmMemTable1IndexDefsAdd('Index1','Id',[]);//定义索引

kbmMemTable1CreateTable

kbmMemTable1Active := True

end

rocedure TForm1Button2Click(Sender: TObject)

var

fld_Id:TIntegerField

fld_Value:TStringField

fld_Time:TDateTimeField

i:Integer

egi

//插入

with kbmMemTable1 do

egi

DisableControls; //切断数据感知控件

try

Open; //打开

//定义Field

fld_Id:=TIntegerField(FieldByName('Id'))

fld_Value:=TStringField(FieldByName('Value'))

fld_Time:=TDateTimeField(FieldByName('Time'))

for i := 0 to 9 do

egi

Inc(Id)

Append; //附加数据

//赋值

fld_IdAsInteger := Id

fld_ValueAsString := 'Hello PFeng!'+inttostr(Id)

fld_TimeAsDateTime := Now

Post; //确定

end

UpdateIndexes;//更新索引

finally

EnableControls; //连接数据感知控件

end

end

end

rocedure TForm1Button3Click(Sender: TObject)

var

fld_Id:TIntegerField

fld_Value:TStringField

fld_Time:TDateTimeField

egi

//更新

with kbmMemTable1 do

egi

Ope

fld_Id:=TIntegerField(FieldByName('Id'))

fld_Value:=TStringField(FieldByName('Value'))

fld_Time:=TDateTimeField(FieldByName('Time'))

if Locate('Id',5,[]) the

egi

Edit

fld_ValueAsString := '内容被修改'

fld_TimeAsDateTime := Now

Post

end

end

end

rocedure TForm1Button4Click(Sender: TObject)

var

fld_Id:TIntegerField

fld_Value:TStringField

fld_Time:TDateTimeField

egi

//查询

with kbmMemTable1 do

egi

Ope

fld_Id:=TIntegerField(FieldByName('Id'))

fld_Value:=TStringField(FieldByName('Value'))

fld_Time:=TDateTimeField(FieldByName('Time'))

if Locate('Id',5,[]) the

ShowMessage(fld_ValueAsString)

//还可以用FindKey实现,结合索引速度更快

// kbmMemTable1IndexFieldNames:='Id'

// if kbmMemtable1FindKey([5]) then

end

end

rocedure TForm1Button5Click(Sender: TObject)

var

fld_Id:TIntegerField

fld_Value:TStringField

fld_Time:TDateTimeField

egi

//删除

with kbmMemTable1 do

egi

Ope

fld_Id:=TIntegerField(FieldByName('Id'))

fld_Value:=TStringField(FieldByName('Value'))

fld_Time:=TDateTimeField(FieldByName('Time'))

if Locate('Id',5,[]) the

egi

Delete

UpdateIndexe

end

end

end

rocedure TForm1Button6Click(Sender: TObject)

var

fld_Id:TIntegerField

fld_Value:TStringField

fld_Time:TDateTimeField

id:Integer

egi

//循环比较最小值

with kbmMemTable1 do

egi

Ope

fld_Id:=TIntegerField(FieldByName('Id'))

fld_Value:=TStringField(FieldByName('Value'))

fld_Time:=TDateTimeField(FieldByName('Time'))

DisableControl

try

First

id := fld_IdAsInteger

while not Eof do

egi

if id > fld_IdAsInteger the

id := fld_IdAsInteger

Next

end

Locate('Id',id,[])

finally

EnableControl

end

end

end

rocedure TForm1Button7Click(Sender: TObject)

egi

//清空

kbmMemTable1EmptyTable

end

rocedure TForm1FormCreate(Sender: TObject)

egi

kbmMemTable1 := TkbmMemTableCreate(Self)

DataSource1DataSet := kbmMemTable1

end

end

>

》》》》》》》》》》》》》》》》》》》》》》》》》》

前端时间一直在研究三层通讯框架,计划封装一套稳定性较好的远程数据库服务接口,前期的方案主要有以下几种: 1,改造自己写的indy+压缩xml流三层应用项目 2,基于MMZ asio远程数据库项目进一步完善 3,寻找并测其他相对成熟的三层通讯框架,知道的有:QuickBurro、RemoteAdo、Middle ADO System、dbIOCP、DataSnap、ASTA、Remobject SDK、kbmMW,接下来我将就我对以上三层框架的浅薄认识一一说明。 首先说方案1,在早些时候为了实现远程数据库与本地数据库的同步,我写过一套基于indy+压缩xml流的C/S应用,客户端的请求封装在xml中,发送到服务端,服务端在数据库中执行后,把执行结果(例如结果集)拼装成xml再压缩成流,返回到客户端,虽然当时基本上满足了需求,但项目有着很大的局限:并发性差、效率低、通讯不稳定等,一旦网络条件稍差,服务端就会报异常,想想那段维护服务端软件的日子简直就是噩梦,如果本次项目仍然采用这种思路,我需要去改进很多地方,比如数据库连接池、多线程、数据校验、底层通讯等,在有限的时间里很难去把多个方面都做稳定,权衡后,觉得自己应该站在巨人的肩膀上来实现自己的业务逻辑,于是放弃了这个方案。 方案2,ASIO(>

最后,最佳的选择就是选择一款成熟的三层框架,在此基础上做二次开发,于是从网上搜了好几天时间,了解各个框架的情况,首先基于成本和稳定性的考虑放弃了国产框架: 1,QuickBurro(>

再来说其他的几个著名框架: 1,DataSnap,这个其实很多人都比较熟悉,它是Delphi的三层框架MIDAS的延续,李维在多次讲座和个人书籍中都强烈推荐,而且国外社区很多人都提到它,估计能力不俗,但是网上褒贬不一,个人深入了解的不够。 2,ASTA(>

接下来的博文中,我不再累述教程(没法超越窑主xalion的高度),更侧重资源的分享,容易犯错的地方提醒、原有Bug的勘误,自己开发经验的总结,希望能够有兴趣或有需求的人提供一些帮助。

Delphi第三方控件全面评比介绍

古人云∶“工欲善其事,必先利其器。”

这句话,我想凡是用Delphi的朋友,应该都有很深切的体会吧。的确,如果Delphi没有了控件的支持,那么人气度一定会大大的降低,不会有现在这样多的Fan了,俺也就改行用 BCB或VC了,呵呵。

但是,现在控件满天飞,不要说DSP(Delphi Super Page)了,光一个深度历险上面的控件就已经洋洋洒洒上万数了,而且每天还在更新,多恐怖啊∶) 然而,选择多了以后,烦恼也就随之而来了(呵呵,如果MM也能有那么多让我挑就好了),因为无法一个个的都去试过,所以有许多的优秀控件还不是为人所知,因此我就写下了这篇文章,希望能为大家当个向导,起到一个抛砖引玉的作用吧。

好了,现在转入正题。首先来大体上为控件分一下类,以方便我们后面的讨论。

但因为控件的种类太多,所以就粗略的分为如下几个类别∶

---界面风格类

---Shell外观类

---Editor类

---Grid类

---DB类

---Report类

---图形类

---综合类

约定的前提是∶All FreeWare,All source至于那些要花钱购买的商业控件,我将在后面另外进行讨论。对于文中我们所讨论的每一个控件,都会给出一个品质得分,商业控件和免费控件一视同仁,不以价格论高低,而以质量分高下:

大体的评分标准如下: 一级棒的超cool控件: ★★★★★

也很不错的控件: ★★★★

虽一般但有特色的控件: ★★★

三颗星以下的控件就不在本文的讨论范围之内了。(☆表示★的效力减半)

◆首先,我们先来讨论一下免费的第三方控件(有源代码):

一界面风格类

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

一个优秀的软件应该具有一个优秀的 *** 作界面,我想这应该是不容置疑的。但是用过C/C++写程序的朋友一定会有这样的感叹,作一个美观而又容易上手的界面实在太累了(除了BCB外)。但自从Delphi横空出世之后,这一切就豁然改观了。

这里我先为大家推荐四套优秀的界面制作控件包。

1FlatStyle21 品质:★★★★★

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

评测:

非常非常棒的界面控件包,什么叫Cool用过了FaltStyle后,你就知道了:)在最新的21版中,FlatStyle作了很大的改动,不但新增了好几个控件,还对源码作了很大幅度的修改,更加有条理了不过,还是有几个小bug,呵呵,但无伤大雅AWater自己又在这个基础上,修订了一下,并增添了几个控件,使用的感觉只有一个字可以形容,呵呵,爽呀!强烈推荐!

2JLAqua10 品质:★★★★

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

评测:

这是一个类Mac OS界面的控件包,如果你对苹果那可人的界面情有独钟的话,这个东东是你最好的选择绝对的抢眼但由于是10版,AWater用了后觉的还是意犹未尽,好象还是少了点什么不过已经很不错了呢,向您推荐

3Platinum Controls 品质:★★★☆

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

评测:

又是一个类Mac OS界面的控件包,和上面的JLAqua相比较的话,主要的不同点在于这个控件包所模拟的是一种较为经典的老式的Mac OS风格界面,而JLAqua则比较新潮一些,同时这个控件包所提供的控件种类也比较少,功能也较为单一。但是,还是颇有点特色的,值得推荐。

4CoolForm 品质:★★★

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

评测:

第一次用这个家伙的时候,还真被它的名字给唬住了,后来仔细一看它的源码,才发现不过如此,其实就是一个作古里古怪的Form的东东而已,不过写得很简洁,功能也不俗,特别是他内带的属性编辑器,写得很有意思,可以根据你所提供的而自动的生成Mask图像。呵呵,还算不错的一个控件,用不用随你。

二Shell外观类

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

相信很多朋友在写程序时,并不满足Delphi提供的OpenDialog和SaveDialog吧,有时需要作一个类似资源管理器(Explorer)的东东,而Delphi提供的FileListBox和DirectoryListBox的却又太难看,太简陋。虽然Delphi提供了ShellApipas,但自己再从头写一个这样的Component却又太麻烦时,下面的这几个东东可以让你从多余的重复劳动中解放出来。

1DFS TSystemTreeView v095 Beta 品质:★★★★☆

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

评测:

说起DFS,相信凡是用Delphi的老鸟,一定不会陌生。这个控件可以算得上是精品了,AWater也就不多嚼舌了,但由于是Beta版的缘故吧,还是有些不太稳定,偶尔会出错。所以就只打了四颗星,有点委屈它了呢,呵呵。向您推荐!

2LsFileExplorer 27 品质:★★★☆

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

评测:

挺不错的一个控件包,唯一可惜的地方是其中的TLsDirTreeCombo部分有一个bug,就是当把TLsDirTreeCombo放在TCoolBar或TControlBar之上时,一旦width有变化,你就会发现TLsDirTreeCombo的ClickButton位置会有严重的错位。呵呵,本来AWater想给它打★★★★☆的,结果就一落千丈啦,满可惜的。如果这个bug能够修正的话,那就很不错了,不过话又说回来,毕竟是免费的吗。还是值得向您推荐。

三Editor类

----------

有没有这样的感觉呢?Memo太简单,Richedit不好用,版本也太乱,容易出问题。想不想拥有一个象Delphi自带的Editor一样的支持语法高亮,功能又强大的编辑控件呢?请看下面两个东东吧。

1mwEdit 092a 品质:★★★★★

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

评测:

这个东东可是目前免费控件中的顶级之作,拥有商业控件般的强大功能,同时又开放源代码,可是广大的Delphi程序员的福气呦!有了它,您也能够轻松的写出像Delphi自带的Editor一样的编辑器来,它除了支持Pascal语法的特殊高亮显示之外,还能够支持其它十多种的语法高亮显示。最妙的是,mwEdit居然还能够和数据库连接起来,

呵呵。实在是太强大了,向您强烈推荐!

2unicode edit 10 品质:★★★★☆

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

评测:

这个控件是著名的JEDI项目之一,大体上和上面的mwEdit相似,不过功能还没有它那么强大,但也已经很不错了。特点是内建了超过一百个unicode(WideString)的函数,是不是很恐怖呀?呵呵,向您推荐!

四Grid类

--------

在现实中的很多数据组织方式非常适合用Grid来表示,尤其是在一个数据量大,信息繁杂的系统中,如果没有Grid control,那将是无法想像的。然而Delphi自带的Grid,不管是StringGrid,还是DrawGrid,或DBGrid,都还嫌不够强大。下面的几个Grid控件也许会让你感到兴奋的。

1TStringAlignGrid 20 品质:★★★★

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

评测:

这个控件虽然是个免费的东东,但是可以看出作者还是很用心的。功能不能说非常强大,但却够用,只要你不是做什么特别的东西,这个控件绝对是你最好的选择。而且附带了一份详细的help文件,值得推荐。

五DB类

------

这方面好像没有什么特别突出的免费控件,挑来捡去的,就只找到这一个,呵呵。

1TkbmMEMTABLE v 233 品质:★★★★

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

评测:

一个不错的内存表控件。如果你正急需这方面的控件的话,就试试吧。值得推荐。

六Report类

----------

说到报表,许多朋友的心里一定会翻涌起种莫名的滋味吧。在品尝过QuickReport带来的尴尬之后,寻找一个优秀的,功能出众的报表控件就一直是我们孜孜以求的,下面为大家推荐两个非常优秀的报表控件,而且还都是我们国人自己开发的,呵呵,掌声欢迎:

1eReport 品质:★★★★☆

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

评测:

非常优秀的报表控件,完全为了中国的报表格式所设计,同时内带一个报表编辑器,工作模式类似于套打,本来用QuickReport需要干一个月的活,用eReport三天就可以搞定了,呵呵。不过,需要指出的是,eReport现在还不能支持报表嵌套,这不能不说是一种遗憾。(居作者王寒松自己说,报表嵌套的部分本来是已经写好了的,可惜不当心给搞丢了,后来也就一直没有写下去了。呜呜呜呜)

2rmachine 品质:★★★★

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

评测:

说起这个东东,可能知道的人并不是很多。但说起FastReport,相信大家应该都有所耳闻吧。这个控件就是在著名的FastReport的基础上发展起来的,修正了一些Bug,增强了许多功能。挺不错的,呵呵。推荐!

七图形类

--------

应该说图形类控件范围太大,从一般的Image到Chart,还有各种各样的Effect内容实在太多太广,我就简单的挑几个最有特色的介绍个大家吧。

1FastLib 品质:★★★★★

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

评测:

非常非常优秀的图形库,提供了大量的图形处理函数,功能之强大甚至连一些商业控件都自愧不如。用它作出的各种的图形特效,呵呵,只能说一个绝字。向您强烈推荐!

2GLScene(OpenGL Component) 品质:★★★★☆

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

评测:

有没有试过这样写OpenGL程序:选一个模型,然后为它添加灯光,纹理。实时调整大小,位置。不满意?就换一个模型,重来一次。一切好像不是在写程序,而好像在3DSMax中现场编辑的感觉一样。怎么样,奇妙吧,还不快去试试。呵呵,向您强烈推荐!

3TPicShow v23 品质:★★★★☆

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

评测:

这个小东东,提供了一百二十二种的图形特效,而且效率也不错。剩去了你的大量查书,编码的时间,快来试试吧,给你的程序里的图形加上些切换特效,让你的用户啧啧称赞你的程序界面。呵呵,向您强烈推荐!

八综合类

--------

综合类的控件包,就是指那些囊括了各种类型的控件的大杂烩,下面为大家列举几个免费控件中优秀的综合类控件包:

1RxLib 275 品质:★★★★☆

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

评测:

说起这个家伙,大家应该早巳如雷贯耳了吧?呵呵,所以AWater就不多说了,可别告诉我说你还不知道,向您强烈推荐!

2RALib 152a 品质:★★★★★

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

评测:

这个东东和RxLib虽然名字差了一个字,但功能却比RxLib还要强,只不过在国内的知名度没有RxLib那么响罢了,去试试吧,保证你会惊喜万分的。向您强烈推荐!

3DevExpress Forum Library 20 品质:★★★★☆

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

这个控件包是著名的Delphi控件厂商Developer Express出品的一套免费且有源代码的扩件包。秉承Developer Express的一贯风格,这个控件包处处透露出一股“贵族”的味道,其中包含了许多的优秀控件,给人的感觉可一点都不像是免费的控件,如果你看一下它的源码,更有这种感觉,条理清晰,结构合理。不愧是名家出手。呵呵。不过

,这么好的东东也不是随便就能得到的,首先得参加Developer Express的Forum,在他们那儿注册之后(当然是免费的),才可以得到。快去注册吧。强烈推荐!

好了,看过了上面的这些免费的第三方控件之后,下面让我们来看一下商业控件的情形吧,我们同样也把商业控件分成8个类别,进行一下评测,来和前面推荐的免费的控件来比一比看,到底是谁利害,商业控件可不一定能全占优呢!

◆商业控件(可是要花钱去买的哟):

一界面风格类

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

1DevExpress Bars 31 品质:★★★★★

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

评测:

是由著名的Delphi控件厂商Developer Express出品的类Word2000界面的控件组。功能之强大,界面之华丽,呵呵,简直是一言难尽呀。我甚至都有些怀疑Dephi的菜单和工具栏就是用这个东东作的。实在太cool了,相比之下,免费的ToolBar97,简直就成了鸡胁,食之无味啊。呵呵,如果你想作出一个精美的流行界面,这是你最好的选择,

而且也能剩下你的大量重复劳动时间。强烈推荐!!!

2ExtarPack 15 品质:★★★★★

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

评测:

如果你想把自已的程序界面作很另类的话,这个东东就是最好的选择了,呵呵。可以把你的程序武装到牙齿,如果别人不知到的话,肯定以为你再用一个什么的新式 *** 作系统呢。呵呵,想给别人一个惊喜吗,就用ExtarPack吧。会让你满意的很。不过,我可要事先提醒你,这个东东的耗费系统资源量也不小哟。强烈推荐!

3FormContainer 15 品质:★★★★★

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

你不会没用过Delphi自带的TeeChart吧,这个东东就是出TeeChart的那个公司的两个程序员写的,质量吗,呵呵,一级棒的呢。绝对不给TeeChart丢脸。知道一个人为什么会在电脑面前傻傻的发呆吗?多半是看到了用FormContainer写的程序了。呵呵。真的绝了,绝对经典的界面风格,让你意想不到的一种惊喜。AWater很配服能写出这个控件的程序员,非常了不起。可惜搞不到源码,不然一定要好好研究一下。向您强烈推荐!!

二Shell外观类

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

1Shell Control Pack VCL v15 品质:★★★★★

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

评测:

关于这个控件,AWater也就不想多费话了。只想说一句:用着的感觉就好像在用资源管理器(Explorer)一样。呵呵,非常非常的棒。向您强烈推荐!!

三Editor类

----------

1Dream Memo 31 品质:★★★★☆

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

评测:

著名的Delphi控件厂商“梦之队”Dream Company出品的强大的编辑控件。应该说各方面都非常优秀。至少在AWater没有使用mwEdit之前一至认为它是最好的,现在吗,嘿嘿,最好的当然就论不到它了。不过,的确非常强大,可惜这个东东写的太庞杂。所

以吗,Bug也比较多。但还是值得向您推荐的。

2PlusMemo 52 品质:★★★★☆

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

评测:

这个控件可是元老了,功能强大。很有特色。很有自已的风格,也支持数据感应。而且作的也很小巧。非常不错。向您强烈推荐!!

四Grid类

--------

1DevExpress ExpressQuantumGrid 21 品质:★★★★★

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

评测:

又是由著名的Delphi控件厂商Developer Express出品的超级Grid控件。主要应用于数据库的 *** 作使用方面。功能强悍,有许多的“独门武功”。呵呵,如果借用围棋的段位来评分的话,这个控件的水平恐怕还在九段之上。堪称超一流。就算是同样的商业控件中,在 *** 作数据库方面,比ExpressQuantumGrid强的恐怕还没生出来。如果再配上同门所出的dxTreeList,dxPrintSystem,可真的是打遍天下无敌手了。而且是百分之一百的纯VCL写成的。是不是COOL呆了,呵呵。向您强烈推荐!!!!!

2TopGrid 201 品质:★★★★★

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

评测:

这个控件虽然在 *** 作数据库功能方面没有像前面的DevExpress ExpressQuantumGrid那样犀利。但它却适应面很广,可以胜任StringGrid,DrawGrid,DBGrid的所有工作,不像ExpressQuantumGrid只适用于数据库 *** 作。而且TopGrid的界面非常的Cool,有点像PowerBuild里的DataWindow的感觉,而且是更加美观。功能十分灵活,可以

非常方便的 *** 作Grid中的每一个Cell,唯一的缺点是编译出来的EXE文件大了点,不过用ASPack压一下就可以两全了,呵呵。向您强烈推荐!!!

3XLGrid 162 品质:★★★★★

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

评测:

用这个控件让我想起了MS的Excel,呵呵。强大,强大,还是强大。可惜不支持数据库 *** 作。在它的主页上有预发布20的实现功能计划书,AWater看了后,大流口水,太Cool了,可惜还没发布。不过这个162版的,巳经很爽了。向您强烈推荐!!!

五DB类

------

实在太多太多了,从高端的ASTA到性能全面的DBISAM,从DAO到Topaz,还有大名鼎鼎的InfoPower,实在是太多了,而且个个都是五星级的。AWater就不写了,反正这方面,是商业控件全面胜出。呵呵。

六Report类

----------

1ReportBuilder 50 品质:★★★★★

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

评测:

非常非常强大的报表控件,不要问我它到底强大到如何程度,因为这估计得整整写上五六千字才能向你介绍清楚。如果你正在为手头缺少一个功能强大,适用面广报表控件时,那么就只有它了,这是你最好的选择。可以说,只要你想得到,它基本都作到的。向您强烈推荐!!!

2HTMLReport 品质:★★★★☆

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

评测:

放上这个东东,可能有凑数之嫌。不能说功能非常非常强大。但你看它的名字,里面有个非常时兴的字眼:HTML。呵呵,对了,它就是作这个用的。如果你有这方面的需要,找它就没错了。总体性能也很不错。当然还没有强大到像上面那个REportBuilder一样恐怖。向您强烈推荐!!

七图形类

--------

1Pegasus公司的系列图形控件 品质:★★★★★

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

评测:

Pegasus 公司出品过许多知名的图形控件,比如像FXTools,ImagN'之类大家都早巳有所耳闻的超级控件。如果你对图形处理方面有较为高的要求,则应该考虑一下Pegasus 公司出品的这些一流的控件。可不是一般的免费控件可以替代的哟。向您强烈推荐!!

八综合类

--------

综合类的我就不写测评了,反正无论是恐龙级的LMD,AHM2000,还是RZLIB,或是精致的1stClass。强大的功能和繁多的控件,都不是免费的控件包可以相提并论的,用的时侯,唯一让我担心的,就是我倒底该用哪一个好呢?呵呵,这岂不也是一种烦恼吗:)

比较之下,我想大家心里都有了一个底了吧。在以上免费控件和商业控件的共八个大类的评测下,应该说商业控件占了绝对的优势,只除了一个Editor类,免费控件可以和商业控件一较高下之外,其余的都是有一定的差距。特别是在DB类方面,免费控件一方死的最残,呵呵。不过话说回来,天下到底没有白吃的午餐,好东西总还是要花钱去买的吗。但是,最后我们可以得出这样一个结论,虽然商业控件功能强大,品质优秀。但是,在你没有哪么多的资金去购买,或你对程序的某方面性能要求并不是非常苛刻时,你完全可以考虑使用一些优秀的第三方免费控件,或以之为蓝本在这个基础上进行二次开发,来达到你的设计要求,这也是一个非常不错,而且也很省钱的方案吧:)

从上面的论述中,大家应该可以了解到了一些关于delphi的第三方控件的资料了,不过在这里要提醒大家的是,控件虽好,但也不能滥用。更不能什么都依靠控件,一个好的程序员,不但要会用,更要会自己写。有空多研究一下优秀控件的源码,对水平的提高是大有帮助的,也能更加深入的理解面向对象编程的机制。希望有朝一日,我们中国人也能写出像delphi的优秀程序来,让满世界的老外为我们来开发第三方的控件,呵呵呵

以上就是关于gdal中的mem用在多线程的时候可以吗全部的内容,包括:gdal中的mem用在多线程的时候可以吗、如何用内存表处理blob字段、Delphi的kbmMemTable控件与AdoQuery有什么区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9273046.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存