4 方法与技巧
4.1 设置代码模板

代码模板是Delphi 的代码感知特性的一种,通过它可以快速、高效和正确地输入代码。代码模板将一些常用的语句块保存在模板中,然后程序员只要在代码编辑器中按下“Ctrl+J”组合键,则会弹出一个小窗口,其中对已有的语句块进行列表显示。可以选择其中的一个并按下回车键,则该模块语句就完整地出现在当前光标所在的位置。例如在需要循环语句的地方,可以选中代码模板列表窗口中的“for statement”,当前光标所在位置就会出现下面的代码:

for := to do
begin
end;

只要将这些代码完善即可。

下面介绍如何添加、删除代码模板,具体过程如下:
(1)在菜单中依次选择“Tools”→“Editor Options...”菜单项,打开“Editor Properties”对话框,选中其中的“Source Options”标签。
(2)单击“Edit Code Templates...”按钮,弹出“Code Templates”对话框,如图4-3 所示。
图4-3 “Code Templates”对话框

(3)单击“Add...”按钮,在弹出的“Add Code Template”对话框中输入代码模板的名称和描述。例如要建立一个具有变量I 的For 循环模板“fori”,可以按照如图4-4 所示进行填写。
图4-4 新建一个名为“fori”的模板


完成后单击“OK”按钮,返回到“Code Templates”对话框。
(4)现在Templates 项中自动选中的条目就是刚才新加的代码模板。在Code 项中输入代码模板中包含的代码。
(5)单击“OK”按钮后,就可以在代码编辑器中使用新定义的代码模板了。
(6)如果要删除已有的代码模板,只要在“Code Templates”对话框的Templates 项中选中要删除的代码模板,然后单击“Delete”按钮即可。
(7)如果在“Code Templates”对话框中单击“Edit...”按钮,则可以对Templates 项中当前选中代码模板的名称和描述进行修改。

4.2 设置提示信息

在程序开发的过程中,可能会声明一个或多个变量,但是这些变量却始终没有被使用。在默认的情况下,编译器会提示这些变量在声明后从来没有被使用过。通过下面的方法,可以决定这些消息是
否显示。
*通过改变关于工程的一些环境设置。可依次选择“Project”→“Options...”菜单项打开“Project Options”对话框,选中“Compiler Messages”标签页,改变General 下的“Show hints”选项即可。
*通过编译指令{$HINTS ON}与{$HINTS OFF}来进行设置。在“Compiler Messages”标签页General 的“Show hints”选项被选中的情况下,实现不显示此类提示信息。代码如下:

...
{$HINTS OFF}
procedure Test;
var
I: Integer; begin
end;
...

在编译上面这段代码的过程中,不会出现变量I 没有被使用的提示信息。

Compile 和 Build 菜单项区别

COMPILE 会检查工程中所有源代码自上次编译以来,有否更新(决定要不要重新生成dcu),然后link生成exe

BUILD 编译所有工程中源代码,不管有否改动,都全部编译,然后link生成exe

COMPILE一般比较快,稍慢点。另外,如果你启用版本自增的话,BUILD会改变exe的版本号。

附表一:Delphi 数据类型列表

分类 范围 字节 备注
简单类型 序数 整数 Integer -2147483648 .. 2147483647 4 有符号32位
Cardinal 0 .. 4294967295 4 无符号32位
Shortint -128 .. 127 1 有符号8位
Smallint -32768 .. 32767 2 有符号16位
Longint -2147483648 .. 2147483647 4 有符号32位
Int64 -263 .. 263 8 有符号64位
Byte 0 .. 255 1 无符号8位
Word 0 .. 65535 2 无符号16位
Longword 0 .. 4294967295 4 无符号32位
字符 AnsiChar(Char) ANSI字符集   8位
WideChar Unicode字符集   16位
布尔 Boolean False < True
Ord(False) = 0
Ord(True) = 1
Succ(False) = True
Pred(True) = False
1  
ByteBool False <> True
Ord(False) = 0
Ord(True) <> 0
Succ(False) = True
Pred(False) = True
1  
WordBool 2  
LongBool 4  
枚举        
子界        
实数   Real 5.0×10-324 .. 1.7×10308 8 [精度]15..16
Real48 2.9×10-39 .. 1.7×1038 6 [精度]11..12;
向后兼容
Single 1.5×10-45 .. 3.4×1038 4 [精度]7..8
Double 5.0×10-324 .. 1.7×10308 8 [精度]15..16
Extended 3.6×10-4951 .. 1.1×104932 10 [精度]19..20
Comp -263 + 1 .. 263 - 1 8 [精度]19..20
Currency -922337203685477.5808 .. 
922337203685477.5807
8 [精度]19..20
字符串     ShortString 255个字符 2..256B 向后兼容
AnsiString 大约 231 个字符 4B..2GB 8位(ANSI)字符
WideString 大约 230 个字符 4B..2GB 多用户服务和
多语言应用程序; 
和com定义的BSTR兼容
其他 String
String[0..255]
PChar
PAnsiString
PWideString
   
结构类型 集合   Set 最多256个元素[0..255]    
数组 静态数组        
动态数组        
记录   Record      
文件   File      
  Class      
类引用   Class reference      
接口   Interface      
指针类型 无类型指针   Pointer      
有类型指针 预定义类型指针 PAnsiString
PString
PByteArray
PCurrency
PDouble
PExtended
PSingle
PInteger
POleVariant
PShortString
PTextBuf
PVarRec
PVariant
PWideString
PWordArray
     
过程类型 程序过程类型   Procedural      
对象过程类型   Procedural      
变体类型     Variant      
  OleVariant    

附表二:Delphi 的运算符列表

分类 运算符 操作 操作数 结果类型 范例
算术运算符 + 整数,实数 整数,实数 X + Y
- 整数,实数 整数,实数 Result - 1
* 整数,实数 整数,实数 P * InterestRate
/ 实数除 整数,实数 实数 X / 2
div 整数除 整数 整数 Total div UnitSize
mod 取模 整数 整数 Y mod 6
+(一元) 符号等同 整数,实数 整数,实数 +7
-(一元) 符号相反 整数,实数 整数,实数 -X
布尔运算符 not 否定 布尔型 Boolean not (C in MySet)
and 布尔型 Boolean Done and (Total > 0)
or 布尔型 Boolean A or B
xor 异或 布尔型 Boolean A xor B
逻辑(按位)运算符 not 按位否定 整数 整数 not X
and 按位与 整数 整数 X and Y
or 按位或 整数 整数 X or Y
xor 按位异或 整数 整数 X xor Y
shl 按位左移 整数 整数 X shl 2
shr 按位右移 整数 整数 Y shr I
字符串运算符 + 连接 字符串、压缩串、字符 字符串 S + '.'
指针运算符 + 指针加 字符指针,整数 字符指针 P + I
- 指针减 字符指针,整数 字符指针,整数 P - Q
^ 指针解除参照 指针 指针的基类型 P^
= 相等 指针 Boolean P = Q
<> 不等 指针 Boolean P <> Q
集合运算符 + 并集 集合 集合 Set1 + Set2
- 差集 集合 集合 S – T
* 交集 集合 集合 S * T
<= 子集 集合 Boolean Q <= MySet
>= 超集 集合 Boolean S1 >= S2
= 相等 集合 Boolean S2 = MySet
<> 不等 集合 Boolean MySet <> S1
in 成员 序数,集合 Boolean A in Set1
关系运算符 = 相等 简单类型、类、类引用、接口、串、压缩串 Boolean I = Max
<> 不等 简单类型、类、类引用、接口、串、压缩串 Boolean X <> Y
< 小于 简单类型、串、压缩串、PChar Boolean X < Y
> 大于 简单类型、串、压缩串、PChar Boolean Len > 0
<= 小于或等于 简单类型、串、压缩串、PChar Boolean Cnt <= 1
>= 大于或等于 简单类型、串、压缩串、PChar Boolean I >= 1
类运算符 as 转换 类和类的实例    
is 判断    
=   关系运算符 = 和 <> 也作用于类    
<>      
地址(@)运算符 @X 如果X是一个变量,那么@X返回X的地址。 当编译指示 {$T-} 有效时,@X是Pointer类型;  而在编译指示 {$T+} 状态下时,@X是 ^T 类型,这里的T是X的类型。
@F 如果 F 是一个例程(函数或过程),那么@F返回 F 的入口点,@F的类型总是Pointer。
@类中方法 当 @ 适用于定义在类中的方法时,方法标识符必需被类的名称限定。例如: @TMyClass.DoSomething

附表三:Delphi 快捷键

分类 快捷键 解释 备注





Escape 选择当前组件容器  
Shift + Click 选择多个组件;选择窗体  
Tab 选择下一个组件  
Shift + Tab 选择上一个组件  
方向键 选择此方向的下一个组件  
Ctrl + 方向键 将所选组件的位置移动 1 个像素  
Shift + 方向键 将所选组件的大小改变 1 个像素  
Ctrl + Shift + 方向键 将所选组件的位置移动 1 个栅格  
Del 删除所选组件  
Ctrl + 鼠标拖动 选择一个容器内的多个组件 可以一起修改共同属性
Tab(在 Object Inspector 中使用) 搜索属性或事件  





F1; Ctrl + F1 光标所在单词的帮助  
Ctrl + Shift + Enter 光标所在单词的参考  
Ctrl + Click(标识符) 寻找标识符的声明处 可配合工具条的:后退/前进
Ctrl + A 全选  
Ctrl + C 复制  
Ctrl + X 剪切  
Ctrl + V 粘贴  
Ctrl + S 保存  
Ctrl + F 查找  
F3; Ctrl + L 继续查找  
Ctrl + R 替换  
Ctrl + E 高级查找  
Ctrl + Shift + F 查找文件  
Ctrl + Z Undo  
Del 删除选中的代码  
Ctrl + Home 到开始  
Ctrl + End 到结束  
Ctrl + ← 按词左移  
Ctrl + → 按词右移  
Ctrl + ↑ 窗口上滚  
Ctrl + ↓ 窗口下滚  
Ctrl + PgUp 本屏首行  
Ctrl + PgDn 本屏尾行  
Alt + G; Ctrl + O + G 到指定行  
Ctrl + Shift + 0..9; Ctrl + K + 0..9 设置(或取消)书签  
Ctrl + 0..9; Ctrl + Q + 0..9 跳到书签  
Ctrl + 空格 输入提示  
Ctrl + J 代码模版  
Ctrl + Shift + J (选定后)进入同步编辑模式  
Ctrl + Shift + 空格 重新提示参数列表  
Ctrl + K + T 选定光标前的单词  
Ctrl + N 插入新行 和 Enter 的区别是光标位置不变
Shift + 方向键/Home/End/PgUp/PgDn 扩选  
Shift + Alt + 方向键/Home/End/PgUp/PgDn 区域选择  
Shift + Alt + PgUp/PgDn 区域选择  
Ctrl + Shift + Alt + PgUp/PgDn 区域选择  
Ctrl + Shift + PgUp/PgDn 区域选择  
Ctrl + Shift + 水平方向键 按单词扩选  
Ctrl + O + C 变换选区  
Ctrl + O + I 变换选区  
Ctrl + O + L 变换选区  
Ctrl + O + K 恢复选区的变换选区  
Alt + 左键拖动 区域选择 区域选择的东西,粘贴也是区域
Ctrl + O + L 选择当前行  
Ctrl + Y 删除当前行  
Ctrl + Shift + Y 删除行右边部分  
Ctrl + T 向右删除词  
Ctrl + BackSpace 向左删除词  
Ctrl + K + W 将文本块写入文件  
Ctrl + K + R 读入文本块  
Ctrl + K + C 文本再制  
Ctrl + K + N 代码转大写  
Ctrl + K + O 代码转小写  
Ctrl + K + F 代码转大写, 并取消选择  
Ctrl + K + E 代码转小写, 并取消选择  
Ctrl + O + U 改变光标后面的字母大小写  
Ctrl + Shift + I; Ctrl + K + I 右移代码块  
Ctrl + Shift + U; Ctrl + K + U 左移代码块  
Ctrl + I 似Tab  
Ctrl + M 似Enter  
Ctrl + N 似Enter,但光标位置不变  
Ctrl + Enter 打开光标所在单词的文件 光标在对象观察器时进入代码编辑
Alt + ]/[ 查找本组定界符  
Ctrl + Shift + V 把选定的字符声明为变量  
Ctrl + Alt + ↓ 光标从声明区跳到代码区  
Ctrl + / 注释与取消注释  
Ctrl + Shift + R 录制(开始/停止)宏  
Ctrl + Shift + P 播放宏  
Ctrl + Shift + T 加入TO DO注释  
Alt + V + i 打开 TO DO List  
Ctrl + Shift + C 类自动生成 可以反向
Ctrl + Shift + ↑/↓ 从接口到实现; 到程序第一行  
Ctrl + Shift + G 为接口加入新的GUID  
Ctrl + Alt + PgUp 第一个函数  
Ctrl + Alt + PgDn 最后一个函数  





Shift + F12 查找窗体  
F12 窗体与窗体代码切换  
Ctrl + F12 查找模块  
Alt + F11 查找自定义uses模块  
Ctrl + F11 打开工程  
Ctrl + Alt + F11 打开或激活 Project manager  
F12 代码窗口/窗体之间切换  
Ctrl + Alt + F12 已打开单元的列表  
F11 对象观察器/代码窗口/窗体切换  
Alt + 0 窗口列表  
Alt + PgUp/PgDn  Code/Design/History 切换  
Ctrl + Alt + F11 工程管理器  
Shift + Alt + F11 打开或激活 Structure  
Ctrl + Alt + P Tool Palette  
Ctrl + Alt + L Local Variables 窗口  
Ctrl + F5; Ctrl + Alt + W Watch List 窗口  
Ctrl + Alt + T Threads 窗口  
Ctrl + F7 Evaluate/Modify 窗口  
Alt + F8 Message 窗口  
Alt + 0 Window List 窗口  
Ctrl + B Buffer List 窗口  
Ctrl + Alt + B Breakpoint 窗口  
Ctrl + F3; Ctrl + Alt + S Call Stack 窗口  
Ctrl + Alt + V Event Log 窗口  
Ctrl + Alt + F FPU 窗口 调试时有效
Ctrl + Alt + C CPU 窗口 调试时有效
Ctrl + Alt + M Modules 窗口  
Ctrl + Shift + A Find Unit 窗口  
Ctrl + Shift + F11 Project Options 窗口  
Ctrl + Q + W 到下一个信息窗口  
F10; Ctrl + F10 使菜单获得焦点  
Shift + F10; Alt + F10 同鼠标右键  
Ctrl + Down 在对象观察器中, 下拉该窗体的组件列表  
Alt + Down 在对象观察器中,下拉属性列表  
Tab + 输入 搜索对象观察器的属性或事件列表  
Ctrl + Enter 在对象观察器中, 切换属性值  
Ctrl + Tab 属性/事件切换; 在代码窗口中是已打开的窗口切换  
Shift + F11 添加工程窗口  
Ctrl + F4 关闭打开的窗口,但不关闭项目  
Alt + F4 关闭程序  



F4 运行到光标位置  
F5 设置/取消断点  
F7 调试,进入子过程  
Shift + F7 Trace into next source line  
F8 调试,不进子过程(除非有断点)  
Shift + F8 Run until return  
F9 运行  
Ctrl + F9 编译工程  
Shift + F9; Alt + P + B 编译 DLL  
Ctrl + Shift + F9 Run without debugging  
Ctrl + O + O 插入编译选项  

Object Pascal 方法与技巧的更多相关文章

  1. 终于懂了:Delphi的函数名不是地址,取地址必须遵守Object Pascal的语法(Delphi和C的类比:指针、字符串、函数指针、内存分配等)good

    这点是与C语言不一样的地方,以前我一直都没有明白这一点,所以总是不明白:函数地址再取地址算怎么回事? ------------------------------------------------- ...

  2. 在Swift中使用JavaScript的方法和技巧

    本文作者Nate Cook是一位独立的Web及移动应用开发者,是继Mattt大神之后NSHipster的主要维护者,也是非常知名活跃的Swift博主,并且还是支持自动生成Swift在线文档的Swift ...

  3. Object Pascal 过程与函数

    过程与函数 过程与函数是实现一定功能的语句块,是程序中的特定功能单元.可以在程序的其他地方被调用,也可以进行递归调用.过程与函数的区别在于过程没有返回值,而函数有返回值. 1.过程与函数的定义 过程与 ...

  4. Object Pascal 运算符

          Object Pascal 的运算符 运算符是程序代码中对各种类型的数据进行计算的符号,通常分为算数运算符.逻辑运算符.比较运算符和按位运算符. 1.算术运算符Object Pascal ...

  5. Object Pascal 数据类型

     数据类型与定义变量 Object Pascal 语言的最大特点是对数据类型的要求非常严谨.传递给过程或函数的参数值必须与形参的类型一致.在Object Pascal 语言中不会看到像C 语言编译器提 ...

  6. Object Pascal 语言基础

    Delphi 是以Object Pascal 语言为基础的可视化开发工具,所以要学好Delphi,首先要掌握的就是Object Pascal 语言.Object Pascal语言是Pascal之父在1 ...

  7. Object Pascal 语法之异常处理

    http://www.cnblogs.com/spider518/archive/2010/12/30/1921298.html 3 结构化异常处理 结构化异常处理(SHE)是一种处理错误的手段,使得 ...

  8. Object Pascal 面向对象的特性

    2 面向对象的特性 在软件系统开发过程中,结构分析技术和结构设计技术具有很多优点,但同时也存在着许多难以克服的缺点.因为结构分析技术和结构设计技术是围绕着实现处理功能来构造系统的,而在系统维护和软件升 ...

  9. Object Pascal对象模型中构造函数之研究

    http://www.delphi2007.net/delphiblog/html/delphi_2004511950333715.html 前言 近期,一直在使用 C++ 与 Object Pasc ...

随机推荐

  1. python-day 1

    学python--脚本语言 为了更好的以后,为了更好的自己,加油!!! 1.安装虚拟机如果遇到这样的错误:此主机支持intel vt-x 处于禁用状态错误 解决方法: 进入BIOS后,找到“Syste ...

  2. A Plug for UNIX 分类: POJ 图论 函数 2015-08-10 14:18 2人阅读 评论(0) 收藏

    A Plug for UNIX Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14786 Accepted: 4994 Desc ...

  3. 第十二届浙江省大学生程序设计大赛-Team Formation 分类: 比赛 2015-06-26 14:22 50人阅读 评论(0) 收藏

    Team Formation Time Limit: 3 Seconds Memory Limit: 131072 KB For an upcoming programming contest, Ed ...

  4. DataRow数组转换DataTable

    public DataTable ToDataTable(DataRow[] rows) { if (rows == null || rows.Length == 0) return null; Da ...

  5. 关于List.ToArray()方法的效率测试

    之前一直认为因为List内部是数组,ToArray的实现只是将数组返回出去而已. 今天测了一下发现并不是那样 var a = new List<int>(); ; i < ; i++ ...

  6. JAVA基础知识之JVM-——URLClassLoader

    URLClassLoader是ClassLoader的一个实现类,它既能从本地加载二进制文件类,也可以从远程加载类. 它有两个构造函数, 即 URLClassLoader(URL[] urls),使用 ...

  7. WP8.1简单项目 《在线词典》

    为什么要做这个词典? 学了正则表达式要运用 增加WP开发熟练度 项目中运用了那些技术? HttpClient 正则表达式 数据绑定 详解 通过http://cn.bing.com/dict/searc ...

  8. COGS502. 长路上的灯

    502. 长路上的灯 ☆   输入文件:light.in   输出文件:light.out   简单对比时间限制:1 s   内存限制:128 MB [题目描述] 在一条无限长的路上,有一排无限长的路 ...

  9. Java之美[从菜鸟到高手演练]之JDK动态代理的实现及原理

    Java之美[从菜鸟到高手演练]之JDK动态代理的实现及原理 JDK动态代理的实现及原理 作者:二青 邮箱:xtfggef@gmail.com     微博:http://weibo.com/xtfg ...

  10. Luence学习笔记

    1.Luence的核心索引类 IndexWriter:建立索引的核心组件 Directory:代表一个lucene索引项的位置,是一个抽象类其子类有FSDirectory和RAMDirectory F ...