delphi笔试题及答案
网上很多delphi笔试题,但大都没有答案或者条理弄的不好,这里整理一份。
二. 是非题(共20道)
1. 从主菜单上选择Project|Syntax Check菜单选项,Delphi将编译从上次编译后有改动的任何单元,并报出遇到的错误。( √ )
答:详情见:http://www.cnblogs.com/sunshine66/p/3788486.html
2. Delphi的VCL对象有些是指针,从堆栈中分配空间,有些则不是。( × )
答:不对,delphi中的所有VCL对象都是用指针来引用的,该指针本身空间从栈上分配,但指针所指对象的空间是在对象Create时从堆上进行分配
3. 粘贴时,如果作为容器的组件已被选择,剪贴板中的组件会当作容器组件的子组件来粘贴( √ )
4. 在由Delphi 管理的窗体类声明段中加进任何代码都会引起程序出错。( × )
5. Delphi 可以在一个报表中使用一个以上的明细区( √ )
答:报表有多种控件,这样说不太明白。。
6. Delphi 可以象其它开发工具一样使用传统的资源,比如菜单可以作为资源加载,以利于实现多国语言环境。( × )?
答:不懂。。
7. 创建组件时可以定义属性的缺省值,但字符串属性不能有缺省值。(× )
8. 声明一个常量后,在程序中则不可以改变这个常量的值。(× )?
答: 我对答案有疑问,常量声明后必须赋值,要不报错,而且在程序中不能修改,要不也报错。
9. 构造子必须通过类的一个有效实例来激活。(× )?
答: 不懂。。
10. 在设计阶段Object Inspector显示被选组件的所有属性。(× )
答:这个显然是错的,显示的只是部分属性。
11. 在Delphi IDE中,按住Shift键,同时单击Components Palette上的组件图标,可以在窗体内放置多个同类组件。( √ )
12. 为减少编程中的错误,用户可以使用Delphi提供的系统函数IsValidIdent检验字符串是否合法。(× )
13. 用户如果不在一个完整的事件响应过程添加任何代码,当保存或编译该项目时,该过程将被自动清除。(√)
14. 使用Runtime Packages技术可以将原先独立的可执行文件分解为动态链接库加上小的可执行文件,这样作的好处是所占磁盘空间比一个
独立的可执行文件小。(× )
15. Delphi和VB一样不能产生真正的可执行代码(本机代码),但是Delphi开发的程序比VB的运行速度快。(× )
16. 大多数组件的属性可以在运行时改变,而且,有些只能在运行时刻改变。(√)
17. 对于用户的Delphi工程中创建的窗体及其组件的属性都保存在一个独立的描述文件,即扩展名为DSK的文件中。(× )
18. Search菜单的Find Error命令是用来寻找运行时的错误,而不是寻找编译错误。(√)
19. Enabled属性不适用于非可视组件。(× )
20. Delphi采用基于对象的引用模式,即类的每一个变量不保存对象的值,而保存一个引用或一个指针来说明对象存储的内存位置。(× )
三. 改错题(共4道)
1. 指出下列代码错误并说明原因:
Var
I:Integer;
L:Long;
Begin
L:=32768;
I:=L;
End.
答: 对现在的delphi7来说上面错了两个地方,
①delphi没用long类型,是longint;②End后面的'.'应该改为';'。 interger是4个字节,只要没超出interger的范围,将longint的值直接赋给integer是不会报错的,而32768没有超出integer的范围,所有没有问题。
2. 指出下列代码错误并说明原因:
if n>37.5 then
AmountEarned:=(n-37.5)*HourlyRate*1.5+37.5*HourlyRate;
else
AmountEarned:= n*HourlyRate;
答:else前面的分号应去掉。
3. 指出下列代码错误并说明原因:
while (total<max) and (sum<=max) and (sum<total)
do statement1;
答:代码运行正常,但逻辑条件写的有冗余,sun<total<max,所以条件sun《=max可以去掉。
4. 指出下列代码错误并说明原因:
procedure Tform1.TestBtnClick(Sender:Tobject);
var z,y,x:integer;
begin
x:=100;
y:=0;
try
z:=x div y;
except
on EdivByZero
do z:=-1;
MessageDlg(‘Z’+IntToStr(z),mtInformation,[mbOK],0);
End;
答:①最后少了一个end; ②on EdivByZero do后面要执行的两句话应该用begin end;包住;③z的值没有被引用,所以异常不会抛出(单步调试不会运行这句话z:=x div y;)。
四. 问答题(共3道)
1. 在Delphi中,对话框与子窗口有什么不同?
2. 使用私有域和方法的目的是什么?
3. 让ActiveX在网页上工作时,总是从Inernet Explorer得到一个错误。错误为:“Your current settings prohibit ActiveX controls”
。这是什么错误?
五. 编程题(共2道)
1. 计算并输出300至500以内所有素数(即质数)中最大的前10个数之和k与300至500以内所有素数的个数j,并将结果输出到文件mydata.dat中
.
2. 在Tform1.FormActive事件中编写代码,要求包括一个循环,在屏幕上随机的位置上用不同的颜色连续画线。
六. 设计题(共1道)
设计一个实用的Windows字体选择列表窗口。要求:
1) 用户可以在列表框中(TListBox)选择字体
2) 用户可以在微调框中(TSpinEdit)调整字体大小
3) 字体与大小以所见即所得的方式显示出来