Delphi编程

2024-05-16

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.

上一篇:再设计下一篇:电子商务信用建设