delphixe 开源的delphi xe10第三方控件怎么安装
各位老铁们,大家好,今天由我来为大家分享delphixe,以及开源的delphi xe10第三方控件怎么安装的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
delphi xe10 怎么样
似乎很多人都觉得Delphi已经没落了、过时了(我身边有好多同事都没听过Delphi)。
但我不这么认为。“真正的程序员用c,聪明的程序员用Delphi”这句话是对Delphi最经典、最实在的描述。或许现在说这句话有点牵强,因为现在互联网太普及,以至于B/S程序远远盖过了C/S程序的风头。
但是C/S程序永远不可能被替代(包括B/S的必备软件--浏览器就是Client)!C/S程序的开发:C、Delphi、C#(个人对其他的C/S开发语言不是很了解,认为没有这三款流行)。那说一下这三种语言:C,灵活性非常强(低级语言的通性),但是使用太复杂,任何功能都要自己写,说白了没有相当的功力很难驾驭;C#应该是最近几年应用比较多的,为什么?因为太简单(高级语言的通性),很多功能拖个控件就搞定;Delphi,灵活性强、操作简单,Delphi的控件库实在太强大了。
但是用Delphi,要用D6和D7,因为6和7是Delphi最完美的两个版本,也使Borland产品达到了最顶峰的时期,至于其他的都太烂,特别是Borland被收购后,唉,惨不忍睹,我看好像还出了Delphi XE3。。。。。。这哪还是Delphi啊,完全脱离的Delphi的风格!
说到前途,可能有人会觉得Delphi的招聘相对较少,这点必须承认。因为Delphi的招聘几乎都是针对大型的集团企业的,成名的大型集团企业当时的企业软件太多太多都是Delphi的。所以你学好Delphi,找到一份Delphi的职业(招聘虽少,如果学好了还是比较容易找的),你的回报将非常可观,不见得会比C程序员差(学Delphi可比C简单多了)。
以上仅个人观点(对其他语言没有任何贬低之意),内容仅供参考。
开源的delphi xe10第三方控件怎么安装
由于组件提供的方式不同,所以安装的方法也是不一样的,下面就目前常见的各种形式的组
件的安装方法介绍一下。
1只有一个DCU文件的组件。DCU文件是编译好的单元文件,这样的组件是作者不想把源码公
布。一般来说,作者必须说明此组件适合Delphi的哪种版本,如果版本不对,在安装时就会
出现错误。也正是因为没有源码,给使用者带来了不便,那就是一旦Delphi版本升级,此组
件就不能再使用了,当然有的作者给出了几种版本的DCU文件,用户根据需要选择使用。这
样的组件的安装方法是:在Component菜单中,选择install component,在对话框中的
"into existing package"页中,单击“Unit file name”后的“Browse”按钮,在打开的
文件对话框中,将“文件类型”设定为*.dcu,找到要安装的DCU文件,按OK按钮返回
"into existing package"页后再按OK按钮就可以安装了。注意,此时Delphi会提示
dclusr40.dpk将被重建,是否继续,OK就可以了。这里是将组件安装到dclusr40.dpk包中,
此包从文件名上可以看出是用户自定义组件包,先安装到这个包中吧,下面再讲有关注意
事项。安装完毕会有已经将组件注册完的提示信息以及安装到哪个组件页中的信息等,到
组件面板上看看,一般会出现一个新的组件页,其中有刚安装的组件。
2、只有PAS文件或既有PAS又有DCU文件的组件。这种组件因为有PAS文件,也就是说作者提
供了源码,这就好办多了。安装的方法和上面是一样的,在文件类型中可以设定为DCU也可
以设定为PAS,建议设定为PAS,这样可用你的Delphi重新编译一下,看是否会出现问题。
Delphi升级后只能选择PAS文件安装,这样才能重新编译,使得组件能适应新Delphi版本。
这样的组件是很值得使用的,根据心铃的经验,没有源码的组件最好不要使用,一是存在
Delphi版本升级后无法使用的问题,再者当程序出现问题后用户无法调试组件来判断是否
是组件中存在BUG。
3、有dpk文件的组件包。带有dpk文件的组件包一般是有多个组件构成的,也就是说安装后
会有多个组件供使用,如果只有一个组件作者一般不会制成DPK文件,使用上面的方式发布
就可以了。对于这样的组件包,一般来说会有详细的安装说明文件,如上面提到的RXLIB,
由于组件复杂且安装时有先后顺序,作者不提供安装说明用户根本无法正确安装。如果没
有安装说明文件,那么用下面的方法安装:在File菜单下,选择”OPEN…”打开dpk文件
(文件类型列表框中选*.dpk),在出现的Package窗口中,工具栏上有Install按钮,按此
按钮即可进行安装。如果Install按钮处于无效状态,那么先按Compile按钮编译,一般
来说编译之后Install按钮就会处于有效状态,此时再按Install按钮就可以了。
4、带有Bpl文件的组件包。一般来说这也是由多种组件构成的组件包,它其实是一个动态
连接库文件(DLL)。对于这种组件包的安装方法是:在component菜单下选择
“install packages”,然后单击Add按钮,在打开的文件对话框中找到相应的bpl文件打
开返回后,再单击Ok按钮就可以了。
5、ActiveX控件的安装。要安装这类控件,需要先用regsvr32.exe注册,然后选择
Component菜单中Import ActiveX Control项。在Import ActiveX Control打开的窗口中,
只有已经注册的ActiveX控件才出现在列表中,选中一个然后按Install按钮就可以安装了。
如果事先没有用regsvr32.exe注册也可以按ADD按钮找到OCX文件即时注册,注册后再进行
安装。
由于组件提供的方式不同,所以安装的方法也是不一样的,下面就目前常见的各种形式的组
件的安装方法介绍一下。
1只有一个DCU文件的组件。DCU文件是编译好的单元文件,这样的组件是作者不想把源码公
布。一般来说,作者必须说明此组件适合Delphi的哪种版本,如果版本不对,在安装时就会
出现错误。也正是因为没有源码,给使用者带来了不便,那就是一旦Delphi版本升级,此组
件就不能再使用了,当然有的作者给出了几种版本的DCU文件,用户根据需要选择使用。这
样的组件的安装方法是:在Component菜单中,选择install component,在对话框中的
"into existing package"页中,单击“Unit file name”后的“Browse”按钮,在打开的
文件对话框中,将“文件类型”设定为*.dcu,找到要安装的DCU文件,按OK按钮返回
"into existing package"页后再按OK按钮就可以安装了。注意,此时Delphi会提示
dclusr40.dpk将被重建,是否继续,OK就可以了。这里是将组件安装到dclusr40.dpk包中,
此包从文件名上可以看出是用户自定义组件包,先安装到这个包中吧,下面再讲有关注意
事项。安装完毕会有已经将组件注册完的提示信息以及安装到哪个组件页中的信息等,到
组件面板上看看,一般会出现一个新的组件页,其中有刚安装的组件。
2、只有PAS文件或既有PAS又有DCU文件的组件。这种组件因为有PAS文件,也就是说作者提
供了源码,这就好办多了。安装的方法和上面是一样的,在文件类型中可以设定为DCU也可
以设定为PAS,建议设定为PAS,这样可用你的Delphi重新编译一下,看是否会出现问题。
Delphi升级后只能选择PAS文件安装,这样才能重新编译,使得组件能适应新Delphi版本。
这样的组件是很值得使用的,根据心铃的经验,没有源码的组件最好不要使用,一是存在
Delphi版本升级后无法使用的问题,再者当程序出现问题后用户无法调试组件来判断是否
是组件中存在BUG。
3、有dpk文件的组件包。带有dpk文件的组件包一般是有多个组件构成的,也就是说安装后
会有多个组件供使用,如果只有一个组件作者一般不会制成DPK文件,使用上面的方式发布
就可以了。对于这样的组件包,一般来说会有详细的安装说明文件,如上面提到的RXLIB,
由于组件复杂且安装时有先后顺序,作者不提供安装说明用户根本无法正确安装。如果没
有安装说明文件,那么用下面的方法安装:在File菜单下,选择”OPEN…”打开dpk文件
(文件类型列表框中选*.dpk),在出现的Package窗口中,工具栏上有Install按钮,按此
按钮即可进行安装。如果Install按钮处于无效状态,那么先按Compile按钮编译,一般
来说编译之后Install按钮就会处于有效状态,此时再按Install按钮就可以了。
4、带有Bpl文件的组件包。一般来说这也是由多种组件构成的组件包,它其实是一个动态
连接库文件(DLL)。对于这种组件包的安装方法是:在component菜单下选择
“install packages”,然后单击Add按钮,在打开的文件对话框中找到相应的bpl文件打
开返回后,再单击Ok按钮就可以了。
5、ActiveX控件的安装。要安装这类控件,需要先用regsvr32.exe注册,然后选择
Component菜单中Import ActiveX Control项。在Import ActiveX Control打开的窗口中,
只有已经注册的ActiveX控件才出现在列表中,选中一个然后按Install按钮就可以安装了。
如果事先没有用regsvr32.exe注册也可以按ADD按钮找到OCX文件即时注册,注册后再进行
安装。
由于组件提供的方式不同,所以安装的方法也是不一样的,下面就目前常见的各种形式的组
件的安装方法介绍一下。
1只有一个DCU文件的组件。DCU文件是编译好的单元文件,这样的组件是作者不想把源码公
布。一般来说,作者必须说明此组件适合Delphi的哪种版本,如果版本不对,在安装时就会
出现错误。也正是因为没有源码,给使用者带来了不便,那就是一旦Delphi版本升级,此组
件就不能再使用了,当然有的作者给出了几种版本的DCU文件,用户根据需要选择使用。这
样的组件的安装方法是:在Component菜单中,选择install component,在对话框中的
"into existing package"页中,单击“Unit file name”后的“Browse”按钮,在打开的
文件对话框中,将“文件类型”设定为*.dcu,找到要安装的DCU文件,按OK按钮返回
"into existing package"页后再按OK按钮就可以安装了。注意,此时Delphi会提示
dclusr40.dpk将被重建,是否继续,OK就可以了。这里是将组件安装到dclusr40.dpk包中,
此包从文件名上可以看出是用户自定义组件包,先安装到这个包中吧,下面再讲有关注意
事项。安装完毕会有已经将组件注册完的提示信息以及安装到哪个组件页中的信息等,到
组件面板上看看,一般会出现一个新的组件页,其中有刚安装的组件。
2、只有PAS文件或既有PAS又有DCU文件的组件。这种组件因为有PAS文件,也就是说作者提
供了源码,这就好办多了。安装的方法和上面是一样的,在文件类型中可以设定为DCU也可
以设定为PAS,建议设定为PAS,这样可用你的Delphi重新编译一下,看是否会出现问题。
Delphi升级后只能选择PAS文件安装,这样才能重新编译,使得组件能适应新Delphi版本。
这样的组件是很值得使用的,根据心铃的经验,没有源码的组件最好不要使用,一是存在
Delphi版本升级后无法使用的问题,再者当程序出现问题后用户无法调试组件来判断是否
是组件中存在BUG。
3、有dpk文件的组件包。带有dpk文件的组件包一般是有多个组件构成的,也就是说安装后
会有多个组件供使用,如果只有一个组件作者一般不会制成DPK文件,使用上面的方式发布
就可以了。对于这样的组件包,一般来说会有详细的安装说明文件,如上面提到的RXLIB,
由于组件复杂且安装时有先后顺序,作者不提供安装说明用户根本无法正确安装。如果没
有安装说明文件,那么用下面的方法安装:在File菜单下,选择”OPEN…”打开dpk文件
(文件类型列表框中选*.dpk),在出现的Package窗口中,工具栏上有Install按钮,按此
按钮即可进行安装。如果Install按钮处于无效状态,那么先按Compile按钮编译,一般
来说编译之后Install按钮就会处于有效状态,此时再按Install按钮就可以了。
4、带有Bpl文件的组件包。一般来说这也是由多种组件构成的组件包,它其实是一个动态
连接库文件(DLL)。对于这种组件包的安装方法是:在component菜单下选择
“install packages”,然后单击Add按钮,在打开的文件对话框中找到相应的bpl文件打
开返回后,再单击Ok按钮就可以了。
5、ActiveX控件的安装。要安装这类控件,需要先用regsvr32.exe注册,然后选择
Component菜单中Import ActiveX Control项。在Import ActiveX Control打开的窗口中,
只有已经注册的ActiveX控件才出现在列表中,选中一个然后按Install按钮就可以安装了。
如果事先没有用regsvr32.exe注册也可以按ADD按钮找到OCX文件即时注册,注册后再进行
安装。
几点说明:1在拿到组件后先看是否有说明文件,一般来说在说明文件中有如何安装的
指导,有些还会有组件的属性、事件、方法的使用说明,这些在使用时是非常重要的。
2在上面的组件(包)安装操作之前,最好将*.bpl拷贝到你的System目录中,将
*.pas、*.dcu、*.dcr、*.dp?拷贝到Delphi的Lib目录中再进行。3前面我们提到安
装DCU组件时,选用的是已经存在的dclusr40.dpk,当然也可以选择安装到一个新的包中,
如果选择新包,需要先取一个名字比如DEMO,事实上安装完毕后用户可以找到的是
Demo.bpl,而找不到DEMO.DPK。假如你已经将一个组件安装到dclusr40.dpk中了,还想再
安装一个组件,如果再安装到dclusr40.dpk中,安装后你得到提示,原来安装的那个组件
已经被取消注册,你将无法使用了。这样不就成了只能安装一个组件了吗?除非你再安装
到一个新的包中才可以两个组件同时使用。当然每安装一个组件生成一个新的BPL文件也
未偿不可,但BPL文件就增加许多。能否在dclusr40.dpk中多安装几个组件呢?当然是可
以的。方法如下:用File菜单下的OPEN打开dclusr40.dpk文件,单击ADD按钮,在打开的
对话框中选择ADD UNIT页面,按Unit file name后的“Browse”按钮打开组件单元文件,
OK即可,用此种方法这样可添加多个组件的单元文件,添加完毕,按一下编译按钮,然后
再按Install按钮即可,如果单元文件是编译好的(DCU)可以直接按安装按钮。4组件的
删除。光会安装可不行,还要会删除呀。很简单,在component菜单下,选择
install packages,在列表中找到安装所在的Bpl,按Remove按钮,ok!再把Bpl文件删掉
就彻底了,如果不删除BPL文件,下次可以按安装BPL组件的方法再安装使用。
delphi xe tdictionary怎么完全释放
原本一直使用 TList,将定义的一个个 Record保存在TList里面,为了能把某些对象管理起来,例如一个类的 n多实例,可以进行索引、查找、释放等
今天刚看到原来已经有了一个叫 TDictionary对象,用起来挺方便。挺像我们在DB中定义的 Dictionary表,Key、Value。而那个不管Key、Value都挺发达,允许各种定义的类。
ok,下面官方Demo很通俗易懂,各方法都在:
type
TCity= class
Country: String;
Latitude: Double;
Longitude: Double; end;
const
EPSILON= 0.0000001;
var
Dictionary: TDictionary<String, TCity>;
City, Value: TCity;
Key: String;
begin{ Create the dictionary.}
Dictionary:= TDictionary<String, TCity>.Create;
City:= TCity.Create;{ Add some key-value pairs to the dictionary.}
City.Country:='Romania';
City.Latitude:= 47.16;
City.Longitude:= 27.58;
Dictionary.Add('Iasi', City);
City:= TCity.Create;
City.Country:='United Kingdom';
City.Latitude:= 51.5;
City.Longitude:=-0.17;
Dictionary.Add('London', City);
City:= TCity.Create;
City.Country:='Argentina';{ Notice the wrong coordinates}
City.Latitude:= 0;
City.Longitude:= 0;
Dictionary.Add('Buenos Aires', City);
{ Display the current number of key-value entries.} writeln('Number of pairs in the dictionary:'+ IntToStr(Dictionary.Count));
// Try looking up"Iasi". if(Dictionary.TryGetValue('Iasi', City)= True) then begin writeln('Iasi is located in'+ City.Country+' with latitude='+ FloatToStrF(City.Latitude, ffFixed, 4, 2)+' and longitude='+ FloatToStrF(City.Longitude, ffFixed, 4, 2)); end else writeln('Could not find Iasi in the dictionary');
{ Remove the"Iasi" key from dictionary.}
Dictionary.Remove('Iasi');
{ Make sure the dictionary's capacity is set to the number of entries.}
Dictionary.TrimExcess;
{ Test if"Iasi" is a key in the dictionary.}
if Dictionary.ContainsKey('Iasi') then
writeln('The key"Iasi" is in the dictionary.')
else
writeln('The key"Iasi" is not in the dictionary.');
{ Test how(United Kingdom, 51.5,-0.17) is a value in the dictionary but
ContainsValue returns False if passed a different instance of TCity with the
same data, as different instances have different references.}
if Dictionary.ContainsKey('London') then
begin
Dictionary.TryGetValue('London', City);
if(City.Country='United Kingdom') and(CompareValue(City.Latitude, 51.5, EPSILON)= EqualsValue) and(CompareValue(City.Longitude,-0.17, EPSILON)= EqualsValue) then
writeln('The value(United Kingdom, 51.5,-0.17) is in the dictionary.')
else
writeln('Error: The value(United Kingdom, 51.5,-0.17) is not in the dictionary.');
City:= TCity.Create;
City.Country:='United Kingdom';
City.Latitude:= 51.5;
City.Longitude:=-0.17;
if Dictionary.ContainsValue(City) then
writeln('Error: A new instance of TCity with values(United Kingdom, 51.5,-0.17) matches an existing instance in the dictionary.')
else
writeln('A new instance of TCity with values(United Kingdom, 51.5,-0.17) does not match any existing instance in the dictionary.');
City.Free;
end
else
writeln('Error: The key"London" is not in the dictionary.');
{ Update the coordinates to the correct ones.}
City:= TCity.Create;
City.Country:='Argentina';
City.Latitude:=-34.6;
City.Longitude:=-58.45;
Dictionary.AddOrSetValue('Buenos Aires', City);
{ Generate the exception"Duplicates not allowed".}
try
Dictionary.Add('Buenos Aires', City);
except
on Exception do
writeln('Could not add entry. Duplicates are not allowed.');
end;
{ Display all countries.}
writeln('All countries:');
for Value in Dictionary.Values do
writeln(Value.Country);
{ Iterate through all keys in the dictionary and display their coordinates.}
writeln('All cities and their coordinates:');
for Key in Dictionary.Keys do
begin
writeln(Key+':'+ FloatToStrF(Dictionary.Items[Key].Latitude, ffFixed, 4, 2)+','+
FloatToStrF(Dictionary.Items[Key].Longitude, ffFixed, 4, 2));
end;
{ Clear all entries in the dictionary.}
Dictionary.Clear;
{ There should be no entries at this point.}
writeln('Number of key-value pairs in the dictionary after cleaning:'+ IntToStr(Dictionary.Count));
{ Free the memory allocated for the dictionary.}
Dictionary.Free;
City.Free;
readln;
end.
好了,文章到此结束,希望可以帮助到大家。