代码模板是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 项中当前选中代码模板的名称和描述进行修改。
在程序开发的过程中,可能会声明一个或多个变量,但是这些变量却始终没有被使用。在默认的情况下,编译器会提示这些变量在声明后从来没有被使用过。通过下面的方法,可以决定这些消息是
否显示。
*通过改变关于工程的一些环境设置。可依次选择“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 | 插入编译选项 |