Object Pascal 方法与技巧

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 插入编译选项  
posted @ 2014-07-04 14:06  ivantang  阅读(1190)  评论(0编辑  收藏  举报