delphi技术文档(系统编程技巧)

合集下载

Delphi7的开发调试技巧及快捷键.

Delphi7的开发调试技巧及快捷键.

(转 Delphi7的开发调试技巧及快捷键Delphi 开发的调试技巧1、设置调试选项Delphi 主菜单。

【 Project 】 ->【 Options 】 , 或单击工程管理器中的【 Project Options 】按钮。

显示 Project Options,选择 Complier<1>选中 Debug Information :把调试信息嵌入到 DCU 单元文件,会加大编译后的DCU 文件,但不会影响最后生成的 exe 的大小和执行速度。

同时激活【 Search 】菜单中的【 Find Error 】命令。

当文件中包含调试信息并得到一个运行时错误 (run-time error, 记录下 Delphi 提供的 16进制地址,在【 Search 】->【 Find Error 】中输入, Delphi 将重新编译程序,并停留在产生错误的命令行。

<2>Local symbols:决定调试器能否看到在 Implementation 中定义的局部变量。

<3>Reference infoj选项 /Definition Only选项是否产生应用程序中对象标识符的引用信息。

信息和对象代码存在 dcu 文件中, 可以使用对象浏览器查看。

如果 Definition Only 选项同时选中,编译器将生成标识符定义位置的信息,能够激活对象浏览器的 Refenrence 页。

如果不选, Dcu 文件更小。

编辑器命令{$D} Debug Information{$L} Local Information{$Y} Symbol Information{$C} Assertions2、使用内部调试器<1> 命令行参数在【 Run 】->【 Parameters 】中设置<2>断点条件断点使源代码断点只有在满足某个条件时才有效。

在【 View 】->[Debug windows]->【 BreakPoints 】打开“BreakPoint List”对话框, 右击断点,从弹出菜单中选择属性。

delphi 教程

delphi 教程

delphi 教程在此篇Delphi教程中,我们将介绍一些基本的Delphi编程知识。

Delphi是一种可视化的集成开发环境,用于创建Windows应用程序。

它支持面向对象编程,具有强大的图形用户界面设计工具和简化的应用程序开发工具。

首先,我们需要了解Delphi的安装和设置过程。

您可以从Embarcadero官网下载Delphi安装程序。

安装完成后,您可以根据需要配置Delphi的界面和选项。

接下来,让我们了解Delphi中的一些基本概念。

Delphi使用对象、类和单位的概念来组织代码。

对象是程序的实体,类是对象的模板,单位是一种将相关类和对象组织在一起的方式。

Delphi中的代码以过程和函数的形式组织。

过程是一段代码块,用于执行特定的任务,而函数是返回一个值的过程。

您可以使用Delphi的集成开发环境编写和编辑代码。

Delphi支持多种数据类型,包括整数、浮点数、字符和字符串。

您可以使用这些数据类型创建变量,并对其进行操作。

在Delphi中,您可以使用条件语句(如if语句和case语句)和循环语句(如for循环和while循环)来控制程序的执行流程。

这样,您可以根据条件执行不同的动作,或者重复执行一段代码。

Delphi还提供了丰富的图形用户界面设计工具。

您可以使用这些工具创建窗体和控件,并将它们放置在窗体上。

您可以使用属性编辑器更改控件的属性,并为控件添加事件处理程序,以响应用户的操作。

最后,让我们谈谈Delphi中的调试和错误处理。

Delphi提供了一些调试工具,可以帮助您查找和修复程序中的错误。

您可以使用调试器跟踪程序的执行过程,并在运行时查看变量的值。

您还可以使用异常处理机制捕捉和处理程序中的异常。

这就是本篇Delphi教程的简要概述。

通过学习这些基本概念,您将能够开始使用Delphi开发Windows应用程序。

希望这篇教程对您有所帮助!。

DELPHI编程技巧集锦(5)

DELPHI编程技巧集锦(5)
if ObjectAssigned then
VCLComObject := Pointer (RefCountedObject);
try
// GetInterface calls ShowMeObject's _Release
// & _AddRef, which is
// implemented by RefCountedObject.
DELPHI
董占山
(中国农科院棉花研究所,河南安阳,455112)
L
在Delphi中重用代码是十分容易的,但是写一个存取常用代码的VCL是十分复杂的,为什么不写一个类单元呢?在一个大型项目中,维护和调试一个类是比较容易的,因为每个类是自包含的,没有全局变量的干扰。下面是一个类的框架:
unit cls_mine;
当前年份
TwoDigitCenturyWindow取值
TwoDigitYearCenturyWindow决定将字符串日期中的两位数年份转换为数值日期时使用的世纪数。在提取世纪之前,用当前年份减去这个值。这种方法可以延长使用两位数记年的软件的寿命。其实,对Y2K问题的最好解决办法是不接受两位数记年法,在输入日期时要求4位数,以排除世纪的混淆。下表列出了使用TwoDigitYearCenturyWindow进行世纪数转换的方法。
Key:=#0; end
end;
Key:=#0语句使在非文本输入时强迫程序发嘟嘟声。
O
在使用RichEdit组件时,希望仅仅获得其中的一部分文本,但是不想设置选择区间和使用SelText属性,可以使用如下代码实现:
{overrides wrong TTextRange definition in RichEdit.pas}

delphi操纵word(完整版)[精华]

delphi操纵word(完整版)[精华]

一、Delphi程序启动Word采用CreateOleObjects的方法来启动Word,调用VBA代码,具体实现过程为:首先使用GetActiveOleObject('Word.Application')判断当前内存中是否存在Word程序,如果存在,则直接连接,如果没有Word程序,则使用CreateOleObject('Word.Application')启动Word二、Delphi程序新建Word文稿格式:WordDocuments.Add(Template,NewTemplate,DocumentType,Visible)Template:使用模板的名称,NewTemplate:新建文档的类型,True表示为模板,False表示为文档DocumentType:文档类型,默认为空白文档Visible:打捞的窗口是否可见举例:Doc_Handle:=Word_Ole.Documents.Add(Template:='C:\Temlate.dot',NewTemplate:=False );三、Delphi程序打开Word文稿格式:WordDocuments.Open(FileName,ConfirmConversions,ReadOnly,PassWordDocument,PasswordTemplate,Revent,WritePasswordDocument,WritePassWordTemplate,Format,Encoding,Visible)FileName:文档名(包含路径)Confirmconversions:是否显示文件转换对话框ReadOnly:是否以只读方式打开文档AddToRecentFiles:是否将文件添加到"文件"菜单底部的最近使用文件列表中PassWordDocument:打开此文档时所需要的密码PasswordTemplate:打开此模板时所需要的密码Revert:如果文档已经,是否重新打开文档WritePasswordDocument:保存对文档更改时所需要的密码WritePasswordTemplate:保存对模板进行更改时所需要的密码Format:打开文档时所需使用的文件转换器Encoding:所使用的文档代码页Visible:打开文档的窗口是否可见举例:Doc_Handle:=Word_Ole.Documents.open(FileName:=Doc_File,ReadOnly:=False,AddToRecentFiles:=False);四、Delphi程序保存Word文稿格式:WordDocuments.SaveAs(FileName, FileFormat, LockComments, Password,AddToRecentFiles, WritePassword, ReadOnlyRecommended,EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData, SaveAsAOCELetter)FileName:文件名。

delphi操作系统编程

delphi操作系统编程

var
tmp: integer;
begin
tmp := 0;
//屏蔽 Alt-Tab
SystemParametersInfo(SPI_SETFASTTASKSWITCH, 1, @tmp, 0);
//屏蔽 Ctrl-Alt-Del
{鼠标 属性}
x := winexec('rundll32.exe shell32.dll,Control_RunDLL Main.cpl', 9);
{多媒体 属性-音频}
x := winexec('rundll32.exe shell32.dll,Control_RunDLL Mmsys.cpl,,0', 9);
{显示 属性-屏幕保护程序}
x := winexec('rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1', 9);
{显示 属性-外观}
x := winexec('rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2', 9);
更改Windows95的墙纸。
在Delphi中你可以很方便地更改墙纸,请参考以下的程序。
procedureChangeIt;
var
Reg:TregIniFile;
begin
Reg:ΚTRegIniFile.Create(′ControlPanel′);
{游戏控制器-一般}
x := winexec('rundll32.exe shell32.dll,Control_RunDLL Joy.cpl,,0', 9);

delphi常用技巧

delphi常用技巧

delphi常用技巧
Delphi是一种强大的编程语言,有许多有用的技巧和功能可以帮助提高开发效率。

以下是一些Delphi常用的技巧:
1. 使用快捷键:Delphi支持许多快捷键,使用这些快捷键可以快速完成常见的任务,如Ctrl+C用于复制,Ctrl+V用于粘贴等。

2. 快速查找和替换:使用Ctrl+Shift+F可以打开查找和替换对话框,输入要查找的文本,然后输入要替换的文本,最后点击“全部替换”即可。

3. 调试技巧:在调试时,可以使用断点、观察表达式、单步执行等技巧来检查程序的运行情况。

4. 自定义控件:Delphi支持自定义控件,可以创建自己的控件来满足特定的需求。

5. 使用第三方控件:Delphi有许多第三方控件可用,这些控件可以提供更多的功能和更好的用户体验。

6. 优化代码:使用一些技巧可以优化代码的运行速度和可读性,例如使用局部变量、避免不必要的对象创建等。

7. 使用异常处理:在Delphi中,可以使用异常处理来处理运行时错误和异常情况。

8. 使用多线程:Delphi支持多线程编程,可以使用多线程来提高程序的性能和响应速度。

9. 使用数据库:Delphi支持多种数据库连接方式,可以使用数据库来存储和检索数据。

10. 使用第三方库:Delphi有许多第三方库可用,这些库可以提供更多的功能和更好的性能。

希望这些技巧可以帮助你更好地使用Delphi进行开发。

delphi编程技巧

delphi编程技巧

DELPHI编程技巧一一、Delphi集成环境与代码调试A 修改Delphi的系统信息默认的Delphi消息、警告和例外描述都是英文的,将这些内容翻译成另一种语言或修改它们使其适合你的需要的最简单方法是编辑资源文件并改变相应的字符串,这些文件位于BIN 目录。

主要资源文件有:SysUtils单元的信息(文件没有找到、转换错误信息等)在sysutils.res 中,数据库错误信息在dbconsts.res中,VCL信息在consts.res中。

注意一些字符串使用格式字符,如%s或%d,来产生最终的字符串,在这种情况下,应将这些字符保留在适当的位置。

B 如何清除无用代码Delphi提供了自动清除源代码中无用代码的强大功能,一般来说,当你保存文件时,Delphi 自动将源代码中空的类方法删除,保证了源代码的清洁。

在没有编译和保存文件的前提下,也可以清除无用代码,方法是:在Delphi 3/4中单击“File”*癝ave As...”菜单命令(在Delphi 1/2中单击“File”*“Save File As...”菜单命令),打开“Save As...”对话窗口,单击“取消”按钮即可。

C 在Delphi 4集成环境中不使用浮动功能你无疑知道Delphi 4集成环境支持大多数窗口的浮动功能。

但是,有时你不想让一个窗口具有浮动功能。

浮动窗口在需要时,十分有用,但在不需要时,也十分恼人。

有两种方法可以改变一个窗口的浮动属性。

第一种方法是:每个可浮动窗口具有一个本地菜单项目---Dockable,如果你不希望一个特定的窗口具有浮动功能,简单地用鼠标右键单击窗口,选空Dockable菜单项目。

这个窗口的浮动功能就关闭了,直到你再选中Dockable项目为止。

这一技术可以防止特定的窗口可停靠。

但有时,你仅仅希望暂时关闭浮动功能,这时,只需要按下<Ctrl>键,再拖动窗口。

D 在工具菜单中添加项目在Delphi集成环境中按F1键可以打开多数Delphi帮助标题,这种方法可以快速打开相关标题的帮助窗口。

delphi十个小技巧

delphi十个小技巧

delphi十个小技巧1、判断一个字符串是否包含于另外一个字符串的方法例如:if pos('ab','abcd')<>0 thenmessagedlg('ab是包含于abcd',mtConfirmation,[mbYes, mbNo],0);pos(obj,target) 在target字符串中找出第一个出现obj的第一个字符位置,如果找不到,返回0.2、如何使窗口全屏,类似游戏一样,而不是窗口的最大化!(1)BorderStyle 为 bsNone(2)Windowstate 为 wsMaximized(3) 退出时可加一个按钮之类的,写上 close 即可退出。

3、数字格式化输出format('%8.2f',[123.456]),返回字符串'123.46'。

4、播放一个wav文件usemmsystem;SndPlaySound('hello.wav',SND_FILENAME or SND_SYNC);5、InputBox,InputQuery和ShowMessage函数的威力usesdialogs;vars,s1:string;b:boolean;begins:=trim(Inputbox('NewPassword','Password','masterkey'));b:=s<>'';s1:=s;if b then b:=InputQuery('ConfirmPassword','Password',s1);if not b or (s1<>s) thenShowMessage('Password Failed');end;6、几个有关子目录的操作的过程MkDir(str); ChDir(str); GetDir(DriveID,str); SetCurrentDir(str);IOResult --上面几个过程调用成功即返回0值7、将一个可视控件变成图形类型例如将一个带背景的LABEL变成一个TIMAGE图片类型,可以这样做:image1.width:=label1.width;image1.height:=label1.height;label1.perform(WM_PAINT,image1.Canvas.Handle,0);8、如何得到字符的ASCII值得到字符的ASCII值,可以用如下语句:var: a:integer;string1:string;beginstring1:='ABC';a:=byte(string[1]); {此时就得到'A'的ASCII值}end;9、动态更新DBGrid的颜色例如,如果一个城市的人口大于200万,我们就让它显示为蓝色。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ÊÓÆµ½Ì³Ì¸üÐÂÖÐ £¬Çë¹Ø×¢£¡
Delphi面向对象编程的20条规则
2004年2月28日 作者: Delphi空间 浏览选项: 颜色
本文已被浏览 344 次
规则一:为每一个类创建一个单元(One Class,One Unit) 请始终牢记这一点:类的私有(private)和保护(protected)的部分只对于其他单元中的类和过程(procedure)才是隐藏 的.因此,如果你想得到有效的封装性,你应该为每一个类使用一个不同的单元。对于一些简单的类,比如那些继 承其他类的类,你可以使用一个共享的单元。不过共享同一个单元的类的数目是受到限制的:不要在一个简单的单 元里放置超过20个复杂的类,虽然Borland公司的VCL代码曾经这样做过。 如果你使用窗体的时候,Delphi会默认的遵循“一个类使用一个单元”的规则,这对于程序员来说也是十分方便 的。当你向你的项目中添加一个没有窗体的类时,Delphi也会创建一个新的独立的单元。
type TformDialog =class(TForm) private listItems:TlistBox; function GetItems(Index:Integer):String; procedure SetItems(Index:Integer:const value:String); public property Items[Index:Integer]:string; end; function TFormDialog.GetItems(Index:Integer):string; begin if Index >=ListItems.Items.Count then raise Exception.Create(‘TformDialog:Out of Range’); Result:=ListItems.Items[Index]; end; procedure TformDialog.SetItems(Index:Integer;const alue:string); begin if Index >=ListItems.Items.Count then raise Exception.Create(‘TformDialog:Out of Range’); ListItems.Items[Index]:=value; end;
规则14:隐藏组件(Hide Components) 我经常听见那些面向对象编程的狂热追求者抱怨Delphi窗体中包含一些在published部分声明的组件,这是和面向对 象思想的封装性原理不相符合的。他们确实提出了一个重要的议题,但是他们中的大多数人都没有意识到解决方法 其实就在他们手边,完全不用重写Delphi代码,也不用转向其他语言。 Delphi向窗体中添加的组件参照可以被移到private部分,使得其他窗体不能访问他们。如果你这样做,你就有必要 设置一些指向组件的窗体属性(请参见规则11),并且使用它们来访问组件的状态。 Delphi将所有的这些组件都放在published部分,这是因为使用这种方式能够保证这些域一定是在.DFM文件中创建的 组件。当你改变一个组件的名称时,VCL能够自动地将这个组件对象与它在窗体中的参照关联起来。因为delphi使 用RTTI和Tobject方法来实现这种功能,所以如果想要使用这种自动实现功能,就必须把参照放置在published部分 (这也正是为什么delphi将所有的组件都放在published部分的缘故)。 如果你想知道的更详细一点,可以参看下面的代码:
begin
Result:=Edit1.Text;
end;
procedure TformDialog.SetText(const value:Stricle_view.asp?id=499 (2 of 6)2004-05-15 15:55:50
private
function GetText:String;
procedure SetText(const value:String);
public
property Text:String;
read GetText write SetText;
function TformDialog.GetText:String;
规则5:添加窗体构造器(Add Form Constructors) 在运行时创建的第二个窗体除了一个默认的构造器(从Tcomponent 类继承而来)外还会提供其他特殊的构造器。 如果你不需要考虑和Delphi4以前的版本的兼容性问题,我建议你重载(Overload)Create方法,添加必要的初始化 参数。具体代码可参见下面的代码:
规则13:使用属性的附加作用(Use Side-Effects In Properties) 请记住:使用属性而不是访问全局变量(参见规则10、11、12)的好处之一就是当你设置或者读取属性的值时,你 还可能有意想不到的收获。 例如,你可以直接在窗体界面上拖拉组件,设置多个属性的值,调用特殊方法,立即改变多个组件的状态,或者撤 销一个事件(如果需要的话)等等。
规则三:为事件命名(Name Events) 对于事件处理方法给出合适的名字更加重要。如果你对于组件给出了一个合适的名字,那么系统默认的名字 ButtonClick将变成BtnAddClick。虽然从这个名字中我们可以猜到这个事件处理程序的功能,但是我认为使用一个能 够描述该方法的作用的名字,而不是采用Delphi附加的名字是一种更好的方式。例如,BtnAdd按钮的onClick事件可 以命名成AddToList。这会使得你的程序可读性更强,特别是当你在这个类的其他方法中调用这个事件处理程序 时,而且这会帮助程序员为类似的事件或是不同的组件选用相同的方法。不过我必须声明,使用动作(Actions)是 目前开发重要的程序时我最喜欢的方法。
规则四:使用窗体方法(Use Form Methods) 窗体都是一些类,因此窗体的代码是以方法组织的。你可以向窗体中添加事件处理程序,这些处理程序完成一些特 别的功能,而且他们能被其他方法调用。除了事件处理方法外,你还可以向窗体添加完成动作的特别定义的方法以 及访问窗体状态的方法。在窗体中添加一些公共的(Public)方法供其他窗体调用要比其他窗体直接操作他的组件 要好。
规则二:为组件命名(Name Components) 为每一个窗体和单元给出一个有意义的名字是十分重要的。窗体和单元的名字必须是不同的,不过我趋向于为他们 两者使用相似的名字,如对于关于窗体和单元可以为他们使用AboutForm 和About.pas. 为组件使用带有描述性的名字同样十分重要。最常见的命名方式是使用类的小写字母开头,再加上组件的功能,如 BtnAdd 或者editName。采用这样的命名方式为组件命名可能会有很多相似的名字,而且也没有一个最好的名字, 到底应该选择那一个应该依据你的个人爱好而定。
规则8:尽量避免在其他的窗体中使用Form1(Seldom Use Form1 In Other Forms ) 即使在其他窗体的代码中,你也应该尽量避免直接使用全局变量,如Form1.定义一些局部变量或者私有域供其他窗 体使用会比直接调用全局变量要好。 例如,程序的主窗体能够为对话框定义一个私有域。很显然,如果你计划为一个派生窗体创建多个实例,这条规则 将是十分有用。你可以在主窗体的代码范围内保持一份清单,也可以更简单地使用全局Sreen对象的窗体数组。
Delphi空间 - delphi技术文档(系统编程技巧)
Edit1.Text;=value; end;
规则12:属性数组(Array Properties) 如果你需要处理窗体中的一系列变量,你可以定义一个属性数组。如果这些变量是一些对于窗体很重要的信息,你 还可以把他们定义成窗体默认的属性数组,这样你就可以直接使用SpecialForm[3]来访问他们的值了。 下面的代码显示了如何将一个listbox组件的项目定义成窗体默认的属性数组。
规则9:移除Form1(Remove Form1) 事实上,我的建议是在你的程序中移除Delphi自动创建的全局窗体对象。即使你禁止了窗体的自动添加功能,这也 有可能是必要的,因为在Delphi随后仍然可能添加这样的窗体。我给你的建议是应该尽量避免使用全局窗体对象。 我认为对于Delphi新手而言,移除全局窗体对象是十分有用的,这样他们不至于对类和全局对象两者的关系感到疑 惑。事实上,在全局窗体对象被移除后,所有与它有关的代码都会产生错误。
Public Constructor Create(Text:string): reintroduce overload; Constructor TformDialog.Create(Text:string); Begin Inherited Crey58x
规则10:添加窗体属性(Add Form Properties) 正如我已经提到过的,当你需要为你的窗体添加数据时,请添加一个私有域。如果你需要访问其他类的数据,可以 为你的窗体添加属性。使用这种方法你就能够改变当前窗体的代码和数据(包含在它的用户界面中)而不必改变其他 窗体或类的代码。 你还应该使用属性或是方法来初始化派生窗体或是对话框,或是访问他们的最终状态。正如我前文所说的,你应该 使用构造器来完成初始化工作
Delphi空间 - delphi技术文档(系统编程技巧)
加入收藏 免费注册 用户登陆 帮助中心
空间首页资源下载技术文档控件教程源码交易空间论坛空间商城视频教程会员中心 VIP 会员 光盘购买访客留言
今天是: 2004年5月15日 星期六 您现在位于: 首页 → 技术文档 → delphi技术文档(系统编程技 巧)
规则7:永远不要在Tform1类中使用Form1(Never Use Form1 in Tform1) 你应该避免在类的方法中使用一个特定的对象名称,换句话说,你不应该在TForm1类的方法中直接使用Form1.如 果你确实需要使用当前的对象,你可以使用Self关键字。请牢记:大多数时候你都没有必要直接使用当前对象的方 法和数据。 如果你不遵循这条规则,当你为一个窗体类创建多个实例的时候,你会陷入麻烦当中。
相关文档
最新文档