Delphi编程(精选四篇)
Delphi编程 篇1
Windows Media Player是一款流行的媒体播放器, 为了使它更容易为您找到经常播放的内容, Windows媒体播放器的“文件”菜单保存了最近访问的文件和网址列表。它可能会严重危及您的隐私, 任何人都可以看到你看过什么电影, 听什么歌等。那么如何将它们清除呢?一般的方法是通过操作注册表来完成。对于一般用户来说, 操作注册表不但麻烦, 而且还容易出错。现在已有很多程序可以清除, 比如360安全卫士等。本文介绍利用DELPHI7编程, 来清除Windows Media Player的播放记录。
2 基本原理
Windows Media Player的播放记录存储在注册表中, 运行注册表编辑器, 逐级展开到“HKEY_CURRENT_USERSoftwareMicrosoftMedia PlayerPlayerRecent File List”[1], 此时程序的右半部出现了许多键值, 它们按“file1”“file2”, …的顺序排列, 这些就是Windows Media Player播放器的历史记录, 如图1所示。
其中的file1-file7即为注册表中保存的Windows Media Player的播放记录信息, 只要删除相应的键即可清除相应的播放记录。
Delphi提供了TRegistry类, 可以对Windows的注册表进行相关操作[2,3]。
3 界面设计
在默认窗体Form1上添加如下组件:一个checklistbox组件, 三个speedbutton组件, 一个EDIT组件, 设计完成后运行的界面如图2所示。
4 程序源代码
由于要操作注册表, 因此要特别注意在USES单元中引用Registry。主要功能代码如下:
5 结语
本文介绍了基于DELPHI编程, 通过修改WINDOWS注册表, 实现清除Windows Media Player的播放列表。以上程序稍加修改, 即可实现诸如调整IE地址栏中的网址、清除realplayer的播放记录等功能。本程序在DELPHI7.0, WINDOWS XP中运行通过。
参考文献
[1]精灵.清除Windows Media Player的播放记录[J].网友世界, 2005, (14) :31.
[2]何定华.Delphi中利用MAC地址实现软件注册[J].微计算机信息, 2011, 27 (2) :246-248.
Delphi编程 篇2
关键词:ActiveX,FLV,Delphi,编程
1 引言
FLV流媒体格式是一种新的视频格式,全称为Flash Video,目前许多视频网站上的小视频都是FLV格式。传统的影音播放器没有播放此文件的功能,即使通过升级能播放,但影音文件大,携带不方便。针对此问题,可以在Delphi中利用FLV控件编写了一个播放FLV文件的小程序来实现FLV流媒体格式的播放。
2 使用FLV控件制作简单的播放器
2.1 FLV播放器
普通的FLV播放器一般具有播放、暂停、停止、音量调节等功能。FLV播放器包含如下3个部分:
(1)播放FLV:播放FLV文件。
(2)控制FLV的播放:包括播放、暂停、停止,以及音量控制。
(3)播放列表:所有可播放的FLV文件均显示在该列表中,单击某个FLV文件,即可播放该FLV文件。
在用户界面中,包含视频播放控件、水平滑块控件、列表控件以及控制FLV播放的按钮控件。在播放FLV时,可以在显示播放的同时显示播放时间。
2.2 Delphi2009中添加FLV控件
FLV控件(控件名为Fly.ocx,可以从网上下载,在Windows中使用regsvr32 fly.ocx注册)在Delphi中不能直接使用,必须安装后才能使用。Delphi2009中安装ActiveX控件的方法如下:
(1)启动Delphi2009。
(2)选择File→New→Package-Delphi for Win32菜单命令,新建一个包。
(3)选择Component菜单下的Import Component命令,打开Import Component对话框,如图1所示。
(4)选择Import ActiveX Control单选项,单击“Next”按钮,弹出“Registered ActiveX Controls”。
(5)在对话框中选择“Fly Flyplayer 0.1 ActiveX Control”,如图2所示。
(6)单击“Next”按钮,弹出控件的Unit等存放位置对话框,选中“Generate component wrappers”复选框,如图3所示。
(7)单击“Next”按钮,弹出“Create Unit”对话框,如图4所示。
(8)选择“Add Unit to package”单选项,单击“Finish”按钮,完成安装。
(9)在项目管理器中用鼠标右击“Package”,从弹出的快捷菜单中选择“Install”命令,完成Package的安装。
Delphi2009中添加Fly.ocx控件成功后就可以在Delphi2009窗口中添加该控件了,该控件位于组件面板的ActiveX控件类中。
2.3 建立用户界面、设置对象属性
(1)新建一个基于对话框的VCL Form Application名为FLV_Play应用程序,窗体Caption属性设为“FLV播放器”,其项目名称为FLVpaly,调整窗体至合适大小。
(2)在窗体上添加五个面板(Panel)(窗口左边2个,右边3个),名称默认,Caption属性设为空,面板的BorderStyle属性设为bsSingle。
(3)在Pancel1面板上放置FLV控件。
(4)在Pancel1面板与Pancel2面板间放置一个滚动条控件,用于显示当前播放FLV文件的进度,而Pancel2面板用于显示当前播放情况。
(5)在panel3面板上放置两个按钮控件,控件名默认,一个按钮控件的Caption属性设为“+”(用于在列表框中添加指定项),另一个按钮控件的Caption属性设为“-”(用于删除列表框中的被选项)。
(6)在Pancel3面板下的Pancel4面板中添加一个列表框控件(ListBox)用于显示播放的FLV文件。
(7)在Pancel4面板下的Pancel5面板中添加七个用于控制播放FLV文件的位图按钮控件。
(8)在Pancel5面板下添加一个标签控件,名称默认,Caption属性设为“声音”,在其后面添加一个滚动条控件,取默认值,滚动条用于控制声音。
(9)在窗体上添加一个打开文件控件。
(10)调整各控件至合适大小,效果如图5所示。
2.4 主要代码
(1)主窗口代码
(2)FLV文件播放窗口代码
(3)控制FLV播放的按钮代码
(4)在列表框中添加或删除FLV文件代码
2.5 执行代码
运行程序,结果如图6所示。
3 结语
以上只简单介绍了Flash Video播放器播放本地FLV视频文件的功能实现,对于远程的FLV视频文件,只需将flyflv1.PlayMovie(str)代码中的str改成url格式即可。另外,在Delphi中通过ActiveX控件可以很容易地实现其他媒体文件的播放功能,例如播放swf格式、AVI格式以及MP3格式等等。用户只需通过不断地实践,即可设计出属于自己的功能强大的多媒体播放器。
参考文献
[1]叶核亚,陈瑞编著.Delphi程序设计实用教程[M].北京:电子工业出版社,2007.
Delphi编程 篇3
Delphi是Inprise公司推出的快速应用程序开发工具(RAD),是一种新颖的可视化编程语言。在工程应用中,采用Delphi语言编写应用程序,可以实现人机交互界面、数据采集和实时监控等,但在数值处理分析、算法工具和绘制数据图形等方面,其效率远远低于Matlab语言。Matlab是Mathworks公司开发的科学计算环境,具有强大的计算绘图能力,并提供了大量的函数库,几乎涵盖了所有的工程计算领域,被誉为“演算纸”式的工程计算工具,但它的缺点是界面开发能力差,代码运行效率低,而且Matlab程序语言无法脱离Matlab环境运行。因此,对这二者取长补短,即将Matlab的计算能力和Delphi软件开发功能相结合,为很多科学研究和工程应用所需要。本文针对Matlab和Delphi各自的特点,探讨了二者的接口编程,详细分析了采用COM(Component Object Model)技术,将Matlab的应用程序转换为COM组件,并在Delphi中直接调用,实现两种软件的无缝集成,同时COM组件可以方便地随同应用程序进行发布,脱离Matlab环境运行。
1 Delphi和Matlab的接口实现方法
实现Delphi和Matlab的接口编程,其实质就是实现二者数据的共享和相互调用。在Mathworks公司推出Matlab6.5之前,Delphi与Matlab实现接口编程主要采用表1所示的五种方法[1,2,3,4,5]。
从表1中,不难看出前三种方法,都不能脱离Matlab环境运行,这大大影响了所开发软件的独立运行和发布;后两种虽然可以脱离Matlab环境运行,但由于受到条件的限制,实现的功能也相应地受到限制,编程难度较大、效率不高。为了实现Delphi与Matlab的接口,本文采用Matlab6.5新集成的Matlab COM Builder模块[7],它提供了一个简单易用的图形化用户界面,帮助用户将用M语言开发的算法自动、快速地转换为独立的COM对象。由于Delphi支持COM技术,所以可以方便地调用COM组件对象,从而实现二者的接口编程,而且访问该COM组件时,不需要切换环境,可以获得最快的运行速度。
2 在Matlab中创建COM组件
COM是组件对象模型的简称, 它定义了一组API和一个二进制标准,是一种Client/Server标准,并提供了一类应用程序接口,允许任何符合标准的应用程序访问,具有语言无关性。这是本文实现Delphi和Matlab接口的关键技术。
2.1 Matlab编译环境的设置
Matlab COM Builder在编译生成COM组件时需要借助外部的编译器,并不是所有的编译器都能生成和Microsoft相兼容的COM组件。Matlab6.5中的COM Builder只支持以下编译器:Borland C++ Builder 3、 4、 5,Microsoft Visual Studio5.0、 6.0 和Microsoft Visual Studio.NET。在Matlab安装了COM Builder之后,要先设置Matlab COM Builder所使用的外部编译器。可以通过在Matlab的Command Window中输入命令mbuild-setup来实现编译器的设置。本文采用的编译器为Microsoft Visual Studio 6.0。
2.2 利用Matlab COM Builder创建COM组件
Matlab COM Builder的工作原理是利用Matlab编译器把Matlab程序转换成C/C++程序,同时产生和COM有关的包装代码,然后调用外部编译器来产生COM对象。
通过Matlab COM Builder制作COM组件的具体过程如下:
(1) 在Matlab中生成所需的M文件,该M文件不能是脚本文件,只能是函数文件。该函数文件既能接受参数,也能返回参数。
(2) 在Matlab命令窗口输入comtool,启动创建COM组件所需的可视化环境Matlab COM Builder主窗口。
(3) 建立新工程。点击File->New Project…,出现新工程设置界面。在Component name中输入要生成的COM组件的名字,组件名即为以后编译生成出来的动态链接库的名称。在Compile code in栏中选择编译代码,由于C代码性能较好,一般选用C代码。如果要调用Matlab绘图指令,则需调用Matlab的图形库,应在编译器选项(Compiler Options)中选中“Use Handle Graphics Library”。其余项均取默认值。到此,仅仅为工程创建了一个以cbl为后缀的工程框架。
(4) 添加类(Class)。点击Project->Add File,将在Matlab环境下编译通过的M函数文件添加到工程中(可添加多个M文件),这就是要调用的接口函数。
(5) 单击Build按钮,对编译的组件进行编译。编译完成后,会在工程文件夹中生成两个文件夹:一个是src,里面存放的是一些中间文件;一个是distrib,里面就是动态链接库(DLL)形式的COM组件文件等。创建COM组件完毕,但只能在源计算机上调用创建的组件。
(6) 打包。若要在别的客户端计算机上调用该COM组件,需对创建的组件进行打包,这可以通过菜单中“Component/Package Component”来实现,打包后会生成一个可执行的自解压程序<Component name>.exe,它包含的文件如表2所示。创建的组件并不能直接调用,还需在系统中对其进行注册。
2.3 COM组件的发布和注册
由于COM组件和客户程序之间的通信是建立在客户/服务器模型之上的,在使用COM组件时,必须通过系统注册表信息才能找到COM组件的位置以及COM组件的相关信息,所以在使用COM组件之前必须在系统中对COM组件在系统进行注册。
在Matlab COM Builder生成COM组件时已经自动完成了组件的注册。为了使生成的COM组件能被其他应用程序调用,还需作一个准备工作:对mwcomutil.dll和mwcommgr.dll进行注册。具体方法:在dos环境下,进入<Matlab >/bin/win32目录下,分别输入mwregsvr mwcomutil.dll和mwregsvr mwcommgr.dll,完成注册。至此,注册完成,在其他任何支持COM组件技术的应用程序环境中均可以调用创建的COM组件。
若要在其他的客户端计算机上调用发布的COM组件,需将distrib文件夹(已打包的COM组件)拷贝到目标计算机上,执行自解压可执行程序<component name>.exe,通过自解压程序产生installer.exe和mwregsvr.exe文件并自动执行,以完成以下任务:
① installer.exe把Matlab C/C++数学和图形库文件解压到目标计算机上的$\distrib\bin\win32文件夹下($为*.cbl工程文件所在的文件夹)。
② mwregsvr.exe把mwcomutil.dll和<component name _ project version>.dll注册到目标计算机上。
完成上述过程后,在系统环境变量path中,添加路径$\distrib\bin\win32,或把$\distrib\bin\win32目录下的所有DLL文件拷贝到目标计算机的<系统安装路径>\windows\system32目录下,使程序运行时能够找到Matlab C/C++数学和图形库的位置。这样就可以在目标计算机上调用所创建的COM组件。
3 Delphi中调用COM组件
COM组件注册完成之后,就可以在Delphi中调用了。所创建的COM组件是具有双重接口的COM对象,Delphi中调用COM对象时,输入参数将转换为Matlab内部数组格式并传递给经过编译的Matlab函数。函数退出时,输出参数由Matlab内部数组格式转换为COM自动化数据类型。COM客户端在经过编译的Matlab函数中将所有的输入、输出参数作为变体型(Variant)变量进行值传递。
创建的COM是DLL形式的组件对象,在Delphi中调用时,组件代码被载入应用程序的进程中。调用之前需对COM对象进行安装。为此,需在Delphi中先引用该COM对象,选择Project->Import Type Library…,出现图1所示的界面,在上面的窗口中找到动态链接库,即<component name 1.0> Type Library(version 1.0),然后点击Install…按钮,在ActiveX组件栏中安装了创建的COM组件,这样就可以在Delphi中调用COM组件的方法,进行程序开发了。
4 Delphi和Matlab接口实现的应用实例
Matlab COM Builder编译生成的组件实现了自动化接口,在Delphi中使用非常方便。这里以一个例子说明基于COM组件技术的Delphi和Matlab的接口实现方法。下面简要介绍在Matlab中生成COM组件,以及如何在Delphi中调用该COM组件,实现Delphi和Matlab的接口编程。
在Matlab中编写M函数文件sinplot.m:
该函数实现的功能:绘制取值范围内的正弦曲线,并随机产生一个点,显示在正弦曲线图中(以“*”表示)。
按上文介绍的方法,制作和注册COM组件,设组件名为sinout。然后在Delphi中调用安装,则在ActiveX组件栏中就有了sinout控件。
Delphi中新建一个工程,在窗体上添加一个sinout控件、两个按钮控件、一个Image1、四个文本框以及四个标签控件。双击Test COM Interface按钮,在按钮的响应事件中添加代码如下:
双击Cancel按钮,并在响应事件中添加代码:Application.terminate;程序运行时,单击此按钮,可退出运行。
本例子虽然简单,但该程序不仅向COM组件传入数据,还接收从COM组件传出的数据和图形,实现了应用程序和COM组件的数据互相调用,包含了接口,具有典型性。本程序把x的取值范围传给COM组件,然后由COM组件负责绘制正弦曲线和随机点,并把随机点的坐标值传出,结果显示在应用程序界面上。运行程序,输入x的取值范围,点击Test COM Interface按钮,运行界面如图2。运行的结果与在Matlab中的结果完全一样。
这里只介绍了在Matlab中COM对象的创建以及Delphi调用COM对象的总体框架。在实际工程应用中,可以根据需要,对其功能进行拓展。
5 结束语
本文讨论了采用COM组件技术的Delphi和Matlab的接口实现方法,该方法是基于组件“复用”的软件开发思想——在开发新的软件程序时,不用一切从零开始,可以直接引用已有的组件。按照这种方法可以根据实际需要开发应用程序,充分利用Matlab强大的科学计算功能和丰富的工具箱,实现Delphi的可视化界面和Matlab强大的数值分析和数据图形绘制能力的有效结合,并且采用组件复用技术对于规模较大、性能、速度和内存管理要求较高的Delphi应用程序是非常有利的。采用Delphi应用程序和COM组件的混合开发软件的方法,可以缩短开发的周期,实现算法的保密性,提高软件性能,为科学研究和工程计算提供了更强的技术支持。本文所有程序均在Windows XP、Delphi 7.0、VC++ 6.0和Matlab 6.5环境下调试通过。
摘要:简要介绍了Delphi与Matlab各自的优缺点,较为全面地列举和分析了二者接口编程的几种方式,重点讨论了Delphi调用Matlab编译生成的COM组件的方法和原理,实现二者的无缝集成。提供的实现过程和应用实例均说明了该方法简便、可操作性强。通过Delphi和Matlab的整合,可以根据实际需要,开发功能强大而且界面友好的软件。
关键词:COM组件,Delphi,Matlab,接口
参考文献
[1]何蓓,李辉.Delphi应用程序与Matlab接口技术的实现及应用[J].计算机系统应用,2000(8):40-42.
[2]程云艳,陈桦.用Delphi面向对象开发模式实现Matlab的调用[J].计算机时代.2004(4):30-31.
[3]韩守红,唐力伟,等.Delphi和Matlab接口的实现方法研究[J].微计算机信息,2001,17(10):45-46.
[4]韩守红,唐力伟,等.Delphi和Matlab动态数据交换技术的实现[J].微计算机信息,2002,18(1):66-67.
[5]游佳,何健鹰.Delphi与Matlab接口以及脱离Matlab运行[J].计算机与数字工程,2004,32(6):21-23.
[6]岳玉芳,尤忠生,等.基于COM的VC与Matlab混合编程[J].微机发展,2005,15(5):47-48.
Delphi编程 篇4
随着计算机应用技术的快速发展,Excel电子表格的普及,工作中常常需要从不同的信息管理系统中查询统计数据并以Excel表格方式展现报表。由于行业或者业务部门需求的变化,导致报表格式、种类繁多。一些复杂报表,需求在软件开发期间都无法明确,为了解决此类问题,采用了表格功能强大的Excel作为报表模板,Delphi程序根据报表数据定义动态填入数据,完成数据填充后以Ftp方式上传填写完数据的文件到Web数据发布平台,从而实现Excel报表的自动生成和发布功能。
2 实现原理
2.1按照业务部门的需求,根据需要的报表格式,编辑好Excel报表模板文件;根据报表的数据内容和区域,编写好报表定义文件。
2.2以报表定义文件文件名作为运行的参数,在操作系统下创建批处理命令,并可以根据实际需要把批处理加入操作系统的计划任务,实现按程序自动运行。
2.3程序根据报表定义文件的描述,主要做如下操作:(1)读取指定的Excel模板文件;(2)到指定的数据库服务器查询数据并填充Excel模板文件;(3)以Ftp方式上传生成好的Excel报表文件到FTP服务器。
3 实现过程描述
3.1 报表定义文件
采用可扩展标记语言(XML文件描述),主要内容描述如下:
在Delphi中使用控件解析方法生成XML文件接口框架代码,通过生成的接口单元读取XML文件,主要代码如下:
3.2 服务器定义文件
文件格式同报表定义文件,主要内容及描述如下:
3.3 采用第三方数据库控件ODAC访问Oracle数据库
ODAC全称Oracle Data Access Components,是Oracle数据存取组件,直接使用Oracle接口(OCI),在应用中建立连接可以使用ODAC Net选项无需在客户机上安装Oralce客户端,仅需TCP/IP支持,本次开发中使用了TOraSession和TOraQuery两个控件,主要代码如下:
3.4 Oracle数据集填充Excel数据区域
根据指定数据区域和SQL语句向Excel模板文件中填写数据,注意点:SQL语句运行结果和指定数据区域要一一对应。
采用Delphi中TNMFTP控件上传文件
所有数据区域数据填充结束后,根据报表定义文件中指定的FTP服务器名称,在服务器定义中查找对应FTP服务器节点上传文件,实现主要代码如下:
4 结束语
Excel是使用广泛的办公软件,通过Excel与Delphi结合,使用者只要熟悉Oracle数据库查询语言就可以设计出比较复杂的报表格式,并实现报表的定期自动生成与上传,切实提高了工作效率。
参考文献
[1]耿宏运,等.Delphi6组件大全[M].北京:电子工业出版社,2002,7.
【Delphi编程】相关文章:
delphi数据库05-04
Delphi笔试是非题05-27
Delphi图书仓库管理系统论文04-19
在DELPHI中实现与AB PLC的通讯05-02
基于Delphi和ArcGIS的海籍管理信息系统设计09-10
程序编程05-17
数控编程05-30
编程计算05-09
编程探讨05-26
调试编程05-28