Borland 基础与应用开发课程认证试题整理集

                            作者: 老大,救我!
标题: Delphi 认证集 
关键字: Delphi 试题 
分类: 个人专区 
密级: 公开 
(评分: , 回复: 0, 阅读: 59) »» 
2004-01-29 到 2004-02-03 Borland 基础与应用开发课程认证试题整理集

试题1     关于Delphi中产生的文件
    编辑阶段: pas/单元文件,dpk/组件包文件,dpr/工程文件,dfm/窗体文件
    编译阶段: dcu/单元编译文件,dcp/Delphi Compile package
    连接阶段: exe,dll,bpl/Borland package library
    运行阶段
试题2     使用Delphi编程中需要掌握的四大语言
    A. Object Pascal   B. SQL   C. HTML/XML   D. UMI
试题3     Delphi发展的两个主要技术 {数据库引擎,网络开发}
试题4     工程中包含的单元主要有带Form的单元和不带Form的单元
试题5     单元文件的结构{unit 单元名,接口部分,实现部分,初始化部分,结束部分}
    前三个部分是必选的,后两个是可选的。
    初始化部分:单元载入内存的时候初始化里面的代码
    结束部分: 单元结束的时候执行的代码
试题6     代码模版在Tools菜单的Editor Options 中的Code Insight
    Code Template 部分的Code中编写代码的时候加个"|"表明光标定位处
    Ctrl+J:在单元中编写代码的时候,敲入模版 按下Ctrl+J自动产生模版代码
试题7     {$开头的表示:编译器指令字 而不是纯粹的注释
    单行注释 //
    块注释 (* *) 或者 {   } 相同类型块注释不能嵌套
试题8     窗体设计中如果要放置多个相同的组件,使用如下技巧:
    按住Shift键 + 单击组件,然后在窗体上单击
试题10     微调控制方向键:Ctrl+方向键;微调改变大小: Shift+方向键
试题11     Edit菜单中Creation Order的功能是:控制非可视组件在窗体产生的时候的创建顺序
试题12     Edit菜单--〉Scale功能:改变窗体上所有组件的位置和大小范围在[25%-400%]
    包括Left,Top,Width,Height都按照比例改变
试题13     Compile Ctrl+F9 仅仅编译,只有当源代码文件改变了才加以编译
      build     不管改变否,都重新编译连接生成目标文件
      Run F9 先看源文件是否改变,改变则Compile ,然后连接生成目标文件运行
试题14     断点设置F5,鼠标单击针对一行,如果该行有多条语句则F8后同时执行完成
    F4 Run to Cursor让程序运行起来,若程序运行到该行则类似F5功能,
        如果把光标移到其它行再按下F4程序就跳到光标行很实用
    F7 Trace Into :可以进入例程
    F8 Step Over :单行/句执行
    工程选项中Options的Compile中的 Use Debug Dcus 可以跟踪进入DCU、
    Run 中的 program Reset 或者使用Ctrl+F2 可以把僵死在IDE环境中的程序解除。
试题15     Project菜单下的Options中的设置仅对当前工程有效,
    如果选中了Options中的Default则该设置对以后产生的工程也有效。
试题16     Project菜单下的Options设置中如何设置动态创建窗体和自动创建窗体
试题17     1> Project菜单下的Options设置中Compile页中选中Optimization
    可以消除无用代码,如for I:=0 to–1 do 绝对不会编译     
    2> Extended syntax 如果去掉则 function中的result不能用
    3> Record field alignment:分配变量的对齐方式字节为单位,8指8字节比较超前
试题18     工具菜单环境选项命令,以下设置针对所有工程
    preferences->Docking->选中Auto Drag Docking 窗口拖放自动融合,
    若想不入邬则按住Ctrl键(在选中情况下)。
    Library->Library path :可以设置常用的搜索路径,适用所有工程
    顺带了解:Tools-->Editor Options 和 Tools-->Debug Options
试题19     窗体模版的选用 File->New->other->Forms     三种选用方式:
    Copy拷贝:完全拷贝,互不影响
    Inherited继承:作为子类使用,模版改变则子类改变
    Use使用:以指针的方式来用,双向变化
    删除模版方法:进入Tools->Repository找到模版页,在Objects中选中对象删除
试题20     标识符的注意点:字母或下划线开始,只能包含字母、数字和下划线的字符串
    不能与保留子相同,尽量使用有意义的单词或单词组合
试题21     命名约定
    常量名:全大写     
    保留字:全小写
    类型名:T 表示类 E表示异常 I表示COM接口
    对象名:edtName btnCalc 类中元音不要,取辅音作前缀,重复辅音取一个
        如 button 去掉u和o 仅保留 btn用小写
    枚举常量名:如Pen中Style:psSolid,psDash,psDot,psDashDot,psDashDotDot,psClear,psInsideFrame
    事件属性名:OnClick 以On开头
    变量、域名:用名词;
    例程名:动宾结构 DoAdd,DrawCircle
试题22     保留字和指示字,65个保留字 + 类中的4个P和异常处理中的on
    44个指示字只在特定上下文中有特定含义如message abstract virtual
    否则可以当作标识符使用。
试题23     数值数据:十进制,科学表示法7e-2 12.35E6 ; 十六进制 $AAAA
试题24     字符串中的注意点
    ‘I can’’t ‘ = ‘I can’#39’t’
    ‘Line ‘#13#$A’Line 2’=’Line 1’+#13#10+’Line 2’
    var message:Single;
    message:=12.25E6; 总共11位
    write(message :15:2); 
    writeln(''''); 输出'符号后加上回车换行符
试题25     运算符的优先级排列问题
    ., @, not,^                                   first (highest)
    *, /, div, mod, and, shl, shr(右移), as(类型转换)     second
    +, - ,or, xor                                   third
    =, <>, <, >, <=, >=, in, is(类型判断)                 fourth (lowest)
试题26     数据类型中的几个问题
    17数据类型,5种标准数据类型(内建声明的数据类型)
    {整型9种:integer 和Cardinal 通用:32位机上是32位,64位上是64位     
    实型5种,记住字节数 Single 4; Extended 10; 其他8 Real为通用
          Currency类型实际存放的方式:数值*10000保存整数形式,取出来除以10000
    字符型 AnsiChar 等价 char 1个字节 WideChar 2个字节
    字符串型 shortstring 短字符串 Ansistring 长字符串 
    WideString 宽字符串 string 同AnsiString   通用型 String
    布尔型 Boolean 只能取 True or False }
    七种结构数据类型{数组、记录、集合、文件、类、类引用(class of)、接口}
    三种特殊数据类型{指针 ^ , 变体 variant , 过程 procedure}
    Delphi专用数据类型{Type TdateTime=type double; TPoint}
试题27     变量的内存空间                               
    var I:Byte I占据1个字节   
    var str:String; 占据4个字节为空指针,当str:=’abcd’的时候,
    在堆中分配空间存放引用计数和abcd四个字符,然后空指针指向这个堆中的起始地址
    字符串具有:CopyOnWrite技术和具有垃圾回收功能。
    var str:string[100]   占据101字节
    var str:ShortString; 分配256个字节,实际字符占据255
试题28     有序数据类型的用法,直接前趋pred、直接后继succ
    如for循环和case 只能用有序数据类型
    整数、字符、布尔、子界、枚举 Ord( )返回整数序号, Pred(),Succ()返回枚举类型
    枚举要注意:它的序号问题,占据的内存问题(可变长的):占据1个字节还是多个字节,看序号大小
    如:TEnum=(meBlue,meRed=0,meGreen=65536) 4个字节 2000则为2个字节
    TmyEnum=(meBlue,meRed=0,meGreen=1)   1个字节还有mrGreen的前趋可以是 meBlue也可以是meRed
试题29     数组:一维动态数组,二维动态数组,下标总是从0开始,分配函数SetLength( )
试题30     例如 type dynIntOne=array of integer;   
          dynIntTwo:array of array of integer;
        var dd1:dynIntOne; 
          dd2:dynIntTwo;   
      没有使用SetLength分配空间之前,此时low(dd1)=0, high(dd1)=-1; 
试题31     记录变量是静态分配的,在栈中分配,所有的对象都是在堆中分配的。
试题32     集合类型 type Tmyset=set of 基类型   最多256个元素,基类型为有序类型
    不但数量<=255 且序号都必须0<=X<=255
    type myset=set of 5..256; 不行,set of 0 .. 255 正确
    File类型:无类型文件 File (按128字节分块) 文本文件 TextFile
试题33     type TnotifyEvent=procedure(sender:Tobject) of object;   
    //类中的过程指针
    type TmyProcedure=procedure(s:string);   //一般的过程指针
试题34     Type TdateTime=type double;
    整数部分:表示日期 加1表示天数加1
    小数部分:表示时间 0 表示午夜0点,0.5表示中午12点 
    1/24 一小时,1/(24*60) 一分钟 1/24*60*60 一秒钟 以此类推 
    从1899年12月30日午夜0点 开始计时 :0
试题34     数据类型转化
    x mod y=x-(x div y)*y   求余看被除数的符号
    10 mod 3=1 -10 mod 3=-1 -10 mod –3=-1 10 mod –3=1
试题35     Pascal中的语句知识,考小程序较多
    语句以分号结束,程序或单元以点句号结束。
试题36     通常函数调用不应当单独构成语句,而应当用作表达式置于赋值语句的右侧。
    设置工程选项对话框Compiler标签页的Extended Syntax为未选中,
    可以禁止函数用作语句。同时,也禁止了Result预定义变量的使用。
试题37     注意Begin   End 界定符的用法:end 之前的那条语句可以不用分号”;”,
    end之后如果作为复合语句一般情况下有分号,但也可以没有分号如if else语句
试题38     with 语句的功能:用在记录、类和无名对象中如 with Tbitmap.Create do
    嵌套的with语句的优先级问题:按照最接近原则处理.结果为Button2.caption变为dddd
    with button2,button1 do
    begin
      caption:='ddd';
    end;
    with button1 do
    begin
      with button2 do
      begin
      caption:='ddddd';     
      end;
    end;
试题39     注释语句:同级不可以嵌套,切记!!
    If xxxx then dosomething
    Else do else;   上述两句在Delphi中算一条语句
    If xxxx then dosomething ;   算一条语句,对一条语句的理解
试题40     Case 语句:值表达式必须是有序类型
    case 值表达式 of 
      valuei: 语句;//begin end; 复合语句
      else 语句;//begin end; 复合语句     此处else 没有冒号
    end;   //有end 没有 begin
试题41     循环语句:for 循环中的循环变量在循环体中不能赋值,且为有序类型
    I:Char;
      for I:=’A’ to ‘Z’ do
    只能在循环中使用的:continue(再度进入循环)和 break(退出循环);
试题42     exit 退出一段例程,如果为主例程则整个程序退出
    repeat语句中有必要用begin end结束吗?可以/不可以,应该可以。
      begin
      end;
    until 结束条件为真;
试题43     两种例程:procedure / function
    声明:相同的连续的形参可以放在一条以逗号隔开的类型声明语句中
    多个形参用分号隔开。
    定义:只能在implementation部分
    调用:调用的时候参数间全部用逗号分隔。
试题44     参数类型5种:值参,变参 var,常参 const,
    in/out COM应用中:单纯的只(进)读和只(出)写,两个可合用
试题45     例程中的缺省参数的使用:注意从后往前缺省,中间不能跳跃
试题46     例程重载(overload)的使用:必须满足一下条件之一
    参数个数不同;参数类型不同;相同个数情况下某个对应位置类型不同
    记住:只要参数类型不同即可,返回值不同无效,
    但是以下可以通过,
    procedure swap(const A,B:Integer);overload;
    begin
    end;
    function swap(const A,B:single):Integer;overload;
    begin
    end;
试题46     作用域问题
    可见性:变量可以被访问的范围。
    生命期:变量能在多长时间内保持其值和保持可见性。
试题47     记录与类的区别
    记录中只能放数据,记录变量是在栈中分配内存,不能自动初始化,
    所有的数据(域)不能对外隐藏。
试题48     type my=record
            name:string;   //4 实际 4 地址吗
            age:single;   //4 实际 4
            bs:Boolean;   //4 实际 1
    end; 
    //如果Project Options的编译器中设置了对齐为1个字节则为9,4-8个字节为12
    如果使用sizeof(my)则结果为:12,
    如果声明变量 var dd:my 不管有没有赋值; sizeof(dd)则结果都为:12
试题49     类中可以包含数据外,还能包含处理数据的例程即方法,对于数据和方法的可见性的约束。
    类类型变量(即对象)的存储分配方式为动态分配也不同于记录变量,类中还包括属性成员
试题50     ctrl+shift+c :自动代码完成针对:方法(定义)、属性(Private方法和域的自动添加)
    Ctrl+shift+↑:回到代码声明处   Ctr+Shift+↓:进入代码定义处
    Ctrl+J: 代码完成         Ctrl+Shift+U 整块左移,Ctrl+Shift+I整块右移
试题51     构造函数功能:实例化和初始化对象
    var bb:Tbitmap; //此时只是个空指针,还没有创建实例
    begin 
      listbox1.Items.Add(inttostr(Integer(bb))); //指针1
      bb:=TBitmap.Create; //在heap中创建对象,
      listbox1.Items.Add(inttostr(Integer(bb))); //指针2
      指针1和2不一样,但是大小都是4个字节,用来存放指针。
    End;
试题52     类的Free方法在Tobject中:间接调用了Destroy;
    procedure TObject.Free;
    begin
      if Self <> nil then
            Destroy;
    end;
试题53 TPerson = class
      Name: string;
      BirthDay: TDate;
      Sex: Boolean;
      constructor Create(const N: string; B: TDate; S: Boolean); overload;
      procedure Talk; virtual;
    end;
    procedure TForm1.Button2Click(Sender: TObject);
    var b:Tperson;
    begin
      ListBox1.Clear;
      ListBox1.Items.Add(b.Name);
      if b.Sex then
      ListBox1.Items.Add('男')
      else
      ListBox1.Items.Add('女');
      //变量b的存储空间大小
      ListBox1.Items.Add(IntToStr(SizeOf(b)));
      //对象b的实例空间大小
      ListBox1.Items.Add(IntToStr(b.InstanceSize));
      //变量b所在的存储地址
      ListBox1.Items.Add(IntToStr(LongInt(@b)));
      //对象b所在的存储地址
      ListBox1.Items.Add(IntToStr(LongInt(b)));
      //对象b中第一个数据成员的存储地址
      ListBox1.Items.Add(IntToStr(LongInt(@b.Name)));
      //对象b中第二个数据成员的存储地址
      ListBox1.Items.Add(IntToStr(LongInt(@b.BirthDay)));
      //对象b中第三个数据成员的存储地址
      ListBox1.Items.Add(IntToStr(LongInt(@b.Sex)));
      b.Free; b:=nil;   //特别要注意回收内存
    end;
试题54     成员的讨论:重要
    数据(域)成员:变量。
    方法成员:前向分类——构造(器)方法、析构(器)方法、一般方法、类方法。
        类方法:可以通过对象和类引用的方法含构造方法。
    一般方法:只能通过对象引用
    方法成员:后向分类——静态方法 尾巴干净的、虚拟方法Virtual、
    动态方法dynamic、抽象方法abstract、覆盖override和重载overload的方法、处理消息的方法message 消息常量。
    虚拟方法:用空间换时间,较快   动态方法:时间换空间,较慢
    抽象方法:前缀必须是虚拟方法或动态方法,只需声明不用定义
    Tobject.destroy 是虚拟的
    属性成员:反映数据(域)的窗口,对数据处理。包括数据属性和事件属性。
试题55     所谓面向对象的语言OOP,就是同时具备抽象性、封装性、继承性和多态性的语言。
试题56     抽象性:建模考虑的问题
    封装性     private protected public
        private     除本单元外,完全不可见。C++中的友元问题。
    注:在Delphi中,对友元概念的支持是通过放置在同一个单元来实现的。
        Protected 除本单元及其子类外,不可见。
        Public 如果类声明在单元接口部分,其它单元只需uses即可见。
        Published 如果是组件,则不仅具有public的可见性,
              而且在设计期的对象检视器可见。缺省的可见性为published。
试题57     编写组件的时候按可见性从小到大排列。
    在每一种可见性中,先数据(域),后方法,再属性。
试题58     通常:数据(域)放在private部分;属性放在published(组件)
    或public(一般类)部分。方法的放置要复杂一些,请注意积累,
    能够可见性低则尽量不要高。
试题59     子类访问父类的私有域出错!子类访问保护域没问题!
    孙子类调用访问父类的私有方法,出错!访问祖父类的保护域没问题!
    如果把三个类都放在一个单元内,则都可以访问!四个域都可以!
试题60     继承:如果子类调用父类的Create则只实现了实例化,而没有初始化。
    多态:构成多态的基本要素:
    (1)类有继承关系;
    (2)派生类对象可以赋给父对象;
    (3)派生类可以override基类的virtual和dynamic方法。
    多态判断规则:
    (1)静态方法看声明,谁声明就是调用谁的即使字类赋给父类,尘归尘,土归土;
    (2)覆盖方法看实际,参考procedure(Sender:Tobject);中的Sender
试题61     下列代码执行后,其正确的输出结果序列为:[考题]
    type
    TA = class
      procedure One; virtual;
      procedure Two;
    end;
    TAA = class(TA)
      procedure One; override;
      procedure Two;
    end;
    procedure TA.One;
    begin
      ShowMessage('基类One');
    end;
    procedure TA.Two;
    begin
      ShowMessage('基类Two');
    end;
    procedure TAA.One;
    begin
      ShowMessage('派生类One');
    end;
    procedure TAA.Two;
    begin
      ShowMessage('派生类Two');
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      fa: TA;
      ca: TAA;
    begin
      Memo1.Clear;
      fa := TA.Create;
      ca := TAA.Create;
      fa.One;
      ca.One;
      fa.Free;
      ca.Free;
      fa := TAA.Create;
      fa.One;         //重点考这里
      fa.Two;
      fa.Free;
    end;

试题62     三大数据模块和公司(Corba:OMG组织;
    DCOM:MS微软公司,RMI(Remote Mothod Invocation):SUN公司
试题63     试题:exception主体结构
    Exception = class(TObject)
    private
        FMessage: string;
    public
        constructor Create(const Msg: string);
          property Message: string read FMessage write FMessage;
    end;
试题64     销毁一个窗口的事件发生的顺序OnCloseQuery   OnClose   OnDestroy
试题65     创建一个窗口的事件发生的顺序OnCreate OnShow OnActivate OnResize OnPaint
    按键发生的系列事件顺序如下:OnKeyDown OnKeyPress OnKeyUp
    鼠标单击的时间顺序onMouseDown OnClick OnMouseUp
    双击鼠标 OnMouseDown OnClick OnMouseUp OnDblClick OnMouseDown OnMouseUp
    注意:OnEnter和OnExit事件 如果没有焦点则在单/双击多发生一个事件OnEnter
试题66     Polygon(const Points:array of TPoint);     //封闭图形,用当前的画刷填充,边框用Pen
      PolyLine(const Points:array of TPoint); //画多边形,用当前的Pen
试题67     Arc,Ellipse,LineTo,MoveTo,Pie, Rectangle方法的使用以及参数
试题68     类层次结构图,从Tobject 开始的整个VCL类图,有考类之间的继承关系
    TObject->TPersistent->TComponent->TControl->{TGraphicControl/TWinControl}
    TObject->Exception->
    TObject->TInterfaceObject
试题69     TWinControl即窗口控件的三大特征:句柄、焦点、部分可以为父
    TGraphicControl即图形控件的三大特征:无句柄、无焦点,全部不可以为父
试题70     TControl类中,控件为了显示出来要指定父parent,但是为父的一定是TwinControl 窗口控件
    Enabled   visible parent   属性进来了
试题71     控件关系Tcontrol->TgraphicControl->Speedbutton
    Tbutton->BitBtn
    因为没有多继承,所以先确定一个主类加以继承,然后把另一个类作为一个属性
试题72     Sizeof(self)   //4
        Sizeof(sender) //4
    类的函数 instancesize(real size) 返回实例空间
试题73     祖先类的选择原则:
      非可视组件最好的基类:TComponent 
      作图形控件最好的基类:TgraphicControl
      作窗口控件最好的基类:TcustomControl,因为它引入了Canvas属性
      组件命名问题:在组件名称之前加一些个性化东西如TLSLPerson
试题74     procedure Register;
    begin
      RegisterComponents('Wujispace', [TLSLPerson]); 
    end;
    Register的大小写不能改变,参数含义:(组件面板页名称,组件类名字-〉开放数组)
试题75     在设计组件时候,属性如果为字符串则不能有缺省值 即不能使用 default
试题76     为组件建立位图图标
      默认使用父类图标,父类没有则使用缺省的Delphi位图
      用Image Editor建立DCR文件,并在其中建立24*24位图,保存时候位图名应与
    组件类名完全相同并大写,DCR名字同组件包名相同这时候在包文件中编写{$R *.dcr}。
      如果dcr文件不同于组件包名的话,需要在包文件中指定{$R 文件所在路径}
      注意:左下角的颜色决定了透明色。这个*号表示:名字相同的情况下缺省。
试题77     定义定制的事件
    1.通过添加事件属性在发布部分建立事件句柄
    property OnPersonClick:TnotifyEvent read FpersonClick write FpersonClick;
    2.在保护部分添加事件调度程序
    procedure PersonClick;dynamic;
    3.在私有部分定义消息处理过程,访问调度程序
    FOnPersonClick:TnotifyEvent;
    procedure WMLButtonClick(var Msg:TWMMouse);message WM_LBUTTONDOWN;
试题78     属性中的default作用:属性的值如果在设计器改变且不同于default的值则该属性要保存
    在dfm文件中,如果相同则不保存。如果去掉default则属性都会保存在dfm文件中。
    如果保留default部分,删除create中的属性赋值,结果同上,这个来自Tpersistent.
    注意:有没有default都不会对属性初始化,初始化只在构造方法中。如果构造方法中
    没有对属性初始化则所有属性初始值为0或者空。
试题79     组件拖放到窗体上由IDE自动实现组件的Owner和Parent的设置
    创建组件对象的时候指定Owner需要注意:Owner必须比被拥有者存活的时间长
试题80     测试组件对象,注意:1. 事件的赋值和处理方式
    2. 顺序 * 创建组件对象     * 测试组件对象 *释放对象
试题81     异常处理注意:中四个关键字和两套结构[异常共2题]
    try         决定一个代码保护块的起始
    except 有异常才执行
    finally 有没有异常都执行
    raise   抛出一个异常
      1)如何处理在程序中出现的异常
      2)当程序中出现错误时候,如何引发异常 raise 异常实例初始化
      3)异常处理它处理的是异常而不是错误,其实错误还没有发生
      4)多个异常如何处理
试题82     要想IDE环境直接显示异常消息对话框,而不是进入异常调试状态请在
    Tools中的Debugger Options中的Language Exceptions页中
    不勾选 Stop On Delphi Exception
试题83     分析下面的代码中调用了那个异常处理
    try
      i := StrToInt('Sam');
      ShowMessage(IntToStr(i));
    except
      on A: EDatabaseError do   ShowMessage(A.message);
      on B: EDivByZero do     ShowMessage(B.Message);
      on C: Exception do     ShowMessage('Exception: ' + C.Message);
      on D: EConvertError do   ShowMessage('EConvertError: ' + D.Message);
    end;
    只执行了:On C:Exception do 这一条,实际上应该由On D: 来处理的!
试题84     异常机制做了这样两件奇妙的事
    (1)错误消息自动包含在异常类的message属性中出现;
    (2)异常帮助你避免发生错误之后意外地执行任何敏感的代码。
试题85     自定义异常类,为创建自己的异常,需要声明一个异常类:
    type
      ESillySpellingError = class(Exception);

试题86     异常处理完后,还可以在把这个异常继续抛出
    此时就没有必要再实例化和初始化一个异常对象,直接使用 Raise 即可。
    因为此时异常处理中已经知道这个异常是属于哪个异常类了。
试题87     如何使下面代码中光标在处理完计算后保持crDefault,可以使用处理异常保护
    try
      try
        for I := 1000 downto 0 do
          J := J + J div I;
        MessageDlg('Total: ' + IntToStr(J), mtInformation, [mbOK], 0);
      finally
        Screen.Cursor := crDefault;
      end;
    except
      on E: EDivByZero do ShowMessage('Error in Algorithm');
    end;

试题88     包是被Delphi程序或IDE所调用的一类特殊的DLL。在Delphi中有两类包:
    运行期包和设计期包,前者在程序运行时提供一定的功能,后者主要用于扩展IDE的功能。
试题89     动态连接库允许多个由不同语言创建的Windows应用程序或DLL共享程序代码和资源,
    以过程和函数调用的方式来提供服务。在多数Delphi开发的应用程序中,包比DLL更加灵活,
    而且易于创建,但在下列情况下,DLL更适合:
    (1)程序模块由非Delphi应用程序调用;     (2)扩展Web Server的功能;
    (3)创建第三方应用模块;         (4)创建的工程是一个OLE容器。
试题90     理解静态连接和动态连接的概念:
    静态连接:编译后将子程序连接到EXE中;EXE文件大,但运行时快。
    动态连接:编译后连接时根据程序中的external声明建立与子程序的联系表,     运行时,先将DLL装入内存并用其运行地址填入联系表(子程序与程序在同一地址空间,
    参数传递发生在堆栈上);EXE文件小,但运行时慢,这个是动态连接中的静态方式。
    另一种动态方式:在程序中真正需要访问的时候通过LoadLibrary FreeLibray动态调用
试题91     哪些是动态连接库文件:bpl,dll,fon,drv
试题92     动态连接库的好处:
    1.如果不同的程序使用相同的DLL,只需在内存中装载该DLL一次即可。
    2.对于复杂程序的维护更加方便。仅需维护易于维护的DLL即可。
    3.使用DLL存储资源如字体、设备驱动程序、不同语言的字符串、位图图标等。
    4.DLL独立于编程语言。
试题93     由外部程序调用的DLL函数或过程必须遵守下列规则:
    1.它必须列在exports子句中,使其可在外部看到;
    2.输出函数应被声明为stdcall,以使用标准的Win32参数传递技术代替
      优化的register参数传递技术;
    3.DLL的参数类型必须是默认的Windows类型,至少在希望该DLL能够应用于其它开发环境时;
4.DLL可以使用全局数据,每当应用程序装载DLL时,实际上是在自己的地址空间中存储着DLL的全局数据,互相不会冲突,无需保护。
试题94     DLL的使用方式
    (1)完成一般子例程的功能;
    (2)用于窗体重用;
    (3)用于数据交换。
试题95     应用程序调用DLL的两种方式:
    (1)静态调用(隐式装载)使用external ‘DLL文件名’;     //严格讲此处是一个dll文件路径
    (2)动态调用(显式装载)使用三个API函数:LoadLibrary、GetProcAddress、FreeLibrary。
试题96     字符串在dll中传递可以用但是会出异常。这时候就要在工程代码文件中uses Sharemem单元,
    而且必须放在uses语句中的第一个;而且在开发的动态库文件中也要加入uses的第一个单元,
    两边都要加。如果只是将字符串传入dll则无需在两端都加入sharemem(都不要),如果要加则都加。
试题97     Name属性 所有的组件有,并非所有的类都有.
Anchors 大部分组件有,相对于父控件Resize而言的锚定点默认为左上角,试着拖动窗体
试题98     助手类知识点 
    Tpersistent->Tstrings->TstringList
        有排序:sort 和 sorted 
        提供文本变化的事件处理器:OnChange
    Tlist->TobjectList/TClassList->TcomponentList
        管理指针数组
    TorderedList->Tqueue->TobjectQueue->Tstack
        管理指针的队列和堆栈,管理对象指针的队列和堆栈
试题99     只要是组件就有属性:Name组件名称和 tag组件标记
    owner拥有者概念:
      任何一个组件必须被另一个组件所拥有,任何一个组件都可以拥有其他组件
      拥有者在销毁自己之前必须负责被拥有组件的销毁
    窗体的拥有者是 Application ,Application的拥有者是 nil
试题100     Tobject,总共25个方法,了解其中7个
    1)     构造和析构相关的3个
        create 静态         destroy 虚拟         Free 静态
    2)     3个类方法
        ClassName     返回类的名称,shortstring
        ClassParent     返回直接基类的指针(类引用)
        InstanceSize     返回对象实例空间的大小 Longint
    3)     一个一般方法 
        ClassType     返回指向本身类的指针 (类引用)
    4)     其他 
        dispatch 消息分发     GetInterface COM接口中用到
试题101     类引用类型是指向类而不是对象的指针,方便使用类方法,它不是类。
    Tclass=class of Tobject; 
    Delphi自带的Tclass如上所示,它不是一个类,而是一个类引用,
    所以不可以创建类引用类型的数组。实际上可以创建数组。
试题102     对象之间进行类型转化:使用As进行类型转化 或者 类型加()
    Tcomponent(Sender) 或者使用 (Sender as Tcomponent)
    AS运算符可以在基类和派生类指针之间进行相互转化,但是基类转成派生类会不会出现异常呢?
    编译可以通过,但是运行后会出异常提示类型不匹配。
试题103     类型判断操作符 Is, 如 If Sender is Tbutton then //左边是否为右边的派生类
    在确定类型的情况下使用As或者()两种方式,否则先用is 判断后使用As
试题104     任何继承自TForm的窗体,他的任何事件创建时,Delphi默认书写方式都是以Form打头的,切记。
    如TForm1.FormCreate(Sender:Tobject); 
    这个不同其它控件的事件实现,都是名字后加事件,如Button1Click(sender:TObject);
试题105     Application 中关于hint属性和OnHint事件的使用,实现上下文们敏感提示
    procedure Tform1.ShowMyHint(Sender:Tobject);
    begin
      self.caption:=Application.Hint;
    end;
    Procedure Tform1.FormCreate(Sender:Tobject);
    Begin
      Application.OnHint:=ShowMyHint;
    End;
    hint:=’toolbar text|statusbar text’;   《1》
    则 《1》处的hint中”|”前面显示在组件上,后面显示在caption上
试题106     关于Self 和 Sender
    Self 用来引用运行时调用该方法的对象,对调用者的引用,是一个指针
        用来判断一般例程和方法的一个标志
    Sender 传递引发该事件的对象,也是一个指针 如:Sender:Tobject
试题107     控制Table的可编辑的属性是:readonly
    控制Query的可编辑的属性是:readonly和 RequestLive
    Table、Query和StoredProc的区别
试题108     数据集的Locate方法的使用和结果
    locate(关键字段,字段值,大小写匹配+部分匹配) 返回true找到
    找到结果则:定位到找到的第一条,找不到则位置不动。
试题109     Query1.SQLS.Text:='select * from Customer where Custno:=custno';
    Query1.params.parambyname('custno').asinteger := 134;
    If not Query1.Prepared then
      Query1.prepare;     //优化准备
    Query1.open;
    Delphi自动做准备吗? 对,不写也可以
    如果Query1.Open 已经打开,是否可以做Query1.Prepare? 可以,不会出现任何异常
试题110     数据集的Active与数据库Database的Connected属性的关系
可以由 Active:=true 触发 Database.Connected连接变为true,注意表/库该关闭的时候关闭,
试题111     数据库组件好处:提供事务的支持;减少与实际数据库的连接的句柄,减少开销;
    可以提供内部使用的别名即使外部文件路径改变也不用改变内部程序;登录提示可设置loginPrompt
试题112     BDE设置的问题:
    取别名 非SQL数据库别名指定文件夹,SQL数据库指定到文件
    数据库中的表通过主键+外键–〉关键字
    默认的interbase的账号 SYSDBA 密码 masterkey
    Database组件的AliasName 来自BDE; DatabaseName提供给程序内部用,自定义
    Table组件中的DataBaseName必须设成 Database.DataBaseName
    此处建议Database.DataBaseName同AliasName一样,好处:内部使用保持一致性
    这样一致的Databasename实现了外部实际数据库的物理无关性
试题113     BDE borland传统引擎,功能强大,配合SQL与ODBC,能够支持绝大多数主流数据库,
    缺点是部署复杂导致不容易分发以及只支持windows
试题114     ADO (ActiveX Data Object) 微软标准,功能强大,易于分发针对windows
试题115     dbExpress   Delphi 6新技术,跨Windows And Linux平台,轻量级引擎,开销小,
    缺点:提供单向只读数据集,但与客户数据集组件技术一起使用
    有很高的性能,易于分发(仅需150KB,BDE用几兆)
    但dbExpress数据集不能使用过滤技术。
试题116     procedure TForm1.Button1Click(Sender: TObject);
    var i:integer;
    begin
      for i:=0 to ListBox1.Items.Count-1 do
      begin
        if listBox1.Selected then
            ListBox1.Items.Delete(i);
      end;
    end;
    请问这段代码会出哪些问题?
    删除最后一行没有问题,删除第0行到第n-1行都会出异常,因为Listbox1的Items.Count会变化,
    显然selected[]已经变化了
试题117     ExtractFiledrive/Path/filename/ext各返回什么
    Drive:返回 盘符+:如C:         Path:返回所在目录+’\’
    Filename:返回文件名xxx.txt     ext:返回扩展名 如.txt
试题118     按下Esc键可以逐步返回父组件的焦点,设计的时候
    模式窗口和非模式窗口的制作,ShowModal 和Show的区别
试题120     对话框的defaultExt 设置缺省扩展名的时候只需要三个字母即可,
    不需要加点如:defaultext:='txt';
    Filter设置:注意由'|'分隔(描述|过滤器) 如filter:=’all file(*.*)|*.*
    多个过滤器用'|'隔开,一个过滤器中的复合filter用分号隔开 '文本文件(*.*)|*.txt;*.doc'
试题121     利用ActionList进行事件/任务以及Groupindex的分配,比较方便
试题122     Style         Grouped     AllowAllUp     效果
    TbsButton(缺省)任意     任意         普通按钮
              False(缺省)     任意     复选按钮
    TbsCheck     True     False(缺省)     单选按钮
                  True         单选但可全不选
试题123     如果要做出复选效果,可令几个按钮有不同的非0的GroupIndex且其AllowAllUp为True。
    Panel + Speedbutton做出工具栏的样子
    GroupIndex     AllowAllUp     效果
    0(缺省)     任意         普通按钮
    非0         False(缺省)     单选按钮
              True         单选但可全不选
    非0但值不同     true         多选但可全不选
试题124     Imagelist组件的使用
试题125     在按钮中如何改变Form1的标题
    Caption:=’kkk’;
    Self.caption :=’kkk’;
    Form1.Caption:=’kkk’;
试题126     查询字段必须做过索引(findkey:datasource),或者locate不一定需要有索引。
试题127     通过DBExpress单向只读引擎从数据库下载数据到本地客户集,在本地修改后,如何提交到服务器上。
    如果在本地修改了数据,然后执行Refresh方法希望从数据库得到新的数据,你会得到一个异常。
    这个问题的解决要这样做:先在本地提交数据修改Applyupdates使(delta为空),然后refresh
    利用客户数据集的ApplyUpdates方法将本地数据提交到服务器,参数的含义表示容错级别
    -1表示忽略所有的修改错误,有多少可以在数据库提交的就该多少
    >=0 表示如果有一条修改在服务器出现错误则所有的修改无效
    例如5 如果发生了4个错误则可以把其他的正确提交,如果错误数达到5则所有的修改无效。
    这个要注意。
试题128     窗体默认的Position属性是poDesigned,屏幕居中 poScreenCenter
试题129     如何访问字段,持久字段(利用字段组件名即可),命名习惯:数据集名+字段名
    非持久字段的方法:Fields/FieldByName/FindField 返回的类型都是TField
    还有一个方法直接在数据集名字后加上['数据表中字段名']如:Table1['ID'] 返回类型是变体
    属性数组中如果缺省值做法是 default; 说明它是这个类的缺省属性,可以通过类名加下标访问
    property FieldValues[const FieldName: string]: Variant read GetFieldValue write SetFieldValue; default;
    default 只能针对数组
试题130     Trunc(2.8) 返回整数部分,Round(2.5)返回的总是偶数此处为:2,Round(3.5)返回4
    正负数规律一样。

试题131     DataSetProvider:构成客户数据集与外部存储之间的管道,向提出请求的客户集提供数据,
    并且在客户修改数据时候赋则将数据发送回底层数据存储(实际由构造SQL语句完成)
    应用程序服务器:通常包含企业逻辑,它包含连接底层数据库和向客户应用程序提供结果数据所需的全部代码。
试题132     TClientSocket如何指定服务器:
        1.指定服务器机器,其中Host优先于Adress
        2.指定服务器服务端口,Service优先于Port
    TServerSocket组件如何监听,指定监听端口时候service优先于Port
    连接或者监听采用:Active属性或者Open方法
试题133     [学生]考过InputQuery以及相关的对话框的使用
试题134     NMFTP NMHTTP NMUDP NMSMTP   NMPOP3使用的协议
试题135     通过文件或者流填充记住四个方法
    LoadFromFile, SaveToFile, LoadFromStream, SaveToStream
    注意:上述保存方法中除文件名/流对象名称参数外还有一个格式参数,有缺省值
      Format:TdataPacketFormat = dfBinary
      DfBinary 专门的二进制格式,
      DfXML,dfXMLUTF8 :XML格式
    保存到磁盘上的客户数据集文件就是所谓MyBase文件(cds文件),
    一般它保存一个单独的数据集,也可以保存嵌套数据集。
试题136     Data 与 Delta的作用:客户机的数据全部放在data中,
    刚开始delta为空;用户修改使用post后,修改的状况将反馈到data和delta中
    最后使用ApplyUpdates()提交到服务器(实际构造SQL语句从Delta中提交数据完成)
试题137     嵌套数据集例子需要如下组件:(利用DBExpress组件实现三层形式的数据库应用)
    SQLConnection,两个SQLClientDataSet,DataSource,DatasetProvider,     ClientDataset     
    SQLConnection连接Interbase数据库,主SQLClientDataSet取自SQLConnection连接Customer表,
        从SQLClientDataSet取自SQLConnection连接Order表,
    DataSource的DataSet属性与主客户集连接
    从客户集的MasterSource连接DataSource,MasterFields产生Customer表的CustNo
        与Order表的CustON建立关联。
    DataSetProvider的DataSet取自主客户集,然后将ClientDataSet的ProviderName
        设成DataSetProvider,设置Active=true就可以了在客户端提取服务器端的数据了。
    在ClientDataSet上右键单击保存成Binary或者XML文档
    这样就实现了从服务器下载数据到本地客户集,然后保存成本地文件,方便携带编辑,
    如果需要提交到服务器,可以再把本地数据发送到服务器的数据库。把单向数据集变成
    可双向编辑方便携带的本地数据集。
试题138     组件 TcustomerClientDataSet->TclientDataSet 
    优点:1)基于内存 //             2)快速     //本地内存数据当然快
      3)高效     //数据存储的格式   4)支持动态索引
      5)支持撤销操作和汇聚 //汇聚 求平均值等
      缺点: 1)单用户   //基于内存
试题139     在设计期创建
        数据字段:data 占据物理存储
        计算字段:不占据物理存储,每当需要时候动态计算受AutoCalcFields属性影响,
        缺省(True)条件下在打开数据集进入编辑模式,窗体上移动焦点修改时候自动计算。
              否则只有在打开数据集进入编辑模式时候重新计算。
        内部计算字段:占物理存储,因此可以在其上创建索引,计算一次后存储在内存中,
              当相关底层字段发生变化时候自动重新计算
        查找字段:类似计算字段,当要依赖另外一个数据集
    添加两个ClientDataSet组件,双击进入字段编辑:建立一个部门表和部门描述表
    cdsCustomer: ID,LastName,FirstName,Department,Bonus,Names,DepartDesc,Salary
          计算字段:Bonus,     内部计算字段:Names
    在cdsCustomerCalcFields事件中编写:
    CDSCustomerBonus.AsFloat:=CDSCustomerSalary.AsFloat*0.15;
    if CDSCustomer.State=dsInternalCalc then //只有当内部字段需要计算时候
        CDSCustomerNames.AsString:=CDSCustomerLastName.AsString+','+
            CDSCustomerFirstName.AsString;
    cdsDepartment: Dept,Description     
    其中Department->Dept DepartDesc->Description
    然后 Create DataSet创建一个数据集,最后右击选择4种类型进行保存数据集这就是公文包的形式
试题140     运行其创建字段的方法
    var 
      cds:TclientData;
    begin
      cds:=Tclientdataset.create(nil);
      try
      finally
    end;
    添加字段,使用AddFieldDef方法
    var FieldDef:TfieldDef;
    begin
      FieldDef:=cds.FieldDefs.AddFieldDef;
      FieldDef.Name:=’ID’;
      FieldDef.DataType:=ftString;
      FieldDef.Size:=20;
      FieldDef.Required:=True;
    end;
    也可以使用:cds.FieldDefs.Add(‘Names’,ftString,20,true)
试题141     创建索引
    设计时候创建:indexdefs属性
    运行时候创建:AddIndex方法和DeleteIndex方法
    ClientDataset1.AddIndex(‘ByName’,’LastName;FirstName’,[ixUnique]);
    参数:索引名,索引字段名用分号隔开,选项
    使用索引: IndexName属性如:clientDataset1.IndexName:=’Byname’;
    或者       IndexFieldNames属性注意分号隔开。、
    获取索引信息:GetIndexNames方法,结果放入Tstings对象中。 
 
  
文章查看页面广告2 
 
  
 
  
【论坛浏览】 【我来说两句】 【打印】 【大】 【中】 【小】 【关闭】 
  
相关评论 
作者: ieqqlin13  发布日期: 2005-10-31 
1.      下列关于dfm 文件的一些说明哪个是正确的?B
A.      dfm文件包含了对应Pascal单元文件的编译后中间代码。
B.      dfm文件保存着一个窗体和窗体拥有的对象的published属性。
C.      dfm文件是编译时产生的符号表,是为了使优化提高编译速度而产生的。
D.      dfm文件是文本文件,用于保存编译器需要用到的pascal文件的符号表
2.      窗体上放置了一个Tpanel类的Panel1,如果定义了Panel1的OnMouseDown,OnMouseup,Onclick,OnDblclick,那么,当在此Panel上双击鼠标时,事件发生的顺序是
A.      OnMouseDown—>Onclick—>OnMouseup—>OnMouseDown —>
B.      OnDblclick—>OnMouseup
C.      OnMouseDown—>OnDblclick—>OnMouseup
D.      OnMouseDown—>Onclick—>OnMouseup —>OnMouseDown—>Onclick—>OnMouseup
E.      OnMouseDown—>Onclick—>OnMouseup —>OnDblclick—>OnMouseDown—>OnMouseup
3.      有关Assign的说法哪个是正确的?C
TmyComponent=Class(TComponent)
-------
Var A,B: TmyComponent;( )
A.A.Assign(B)的作用是实现对象的引用参考的赋值,作用与A:=B语句是相同的。
B.      A.Assign(B)语句是不成立的,Assign语句作用是判断一个对象的指针是否为NIL。
C.      A.Assign(B)实现的作用是对象间内容的复制,其作用与A:=B在大多数情况下是不同的。
D.      A.Assign(B)的作用是实现对象间内容的复制,其作用与A:=B这样的语句是相同的。
4.      在操作一个职工信息数据表时,需要在更新职工年龄前对输入的年龄做合法性检查下面语句在数据集的Before Post事件中检查输入的年龄
5.下面对象继承关系中不正确的是   D
A. Tobject->Tpersistent->Tcomponent
B.Tpersistent->Tcomponent->Ttimer
C. TwinControl->TscroclWinControl->Tform
D. Tcontrol->TGraphicControl->TwinContro
6.以下消息函数正确的使用方法是
var Amsg:TMsg;     // TMsg encodes the information from a Windows message
BMessage:Tmessage;   // TMessage represents a Windows message
A. perform(Bmessage,0,0)
B .sendMessage(handle, Bmessage,0,0) 
C. postMessage(handle, Bmessage,0,0)
D. Dispatch(BMessage)
7.一个XML文档(DOM)解机器将文档的全部内容加载到内存中的一个树型结构中
A 错   B 正确
8.窗体上放置一个DBGrid用来显示数据集AQuery中的字符类型字段FieldA和FieldB的内容,其中FieldA在DBGrid的第一列显示,FieldB在DBGrid的第二列显示,怎样使字段FieldB在DBGrid中的显示标题居中对齐
A 设置Aquery.FieldByName(‘FieldA’) Alignment:=taCenter
B 上两种都可以
C 设置DBGrid.Colums[0].Title.Alignment:=taCenter
9窗体产生时事件次序     2
1 Creat->show->resize->active
2 Creat->show-> active->resize
3 Creat-> resize-> active->show
4 Creat-> active->show->resize
15.已知有说明var s:string;下列程序段中的错误为:
Case S of 
‘book-A’:ProcessSelectionA;
‘book-B’:ProcessSelectionB;
‘book-C’:ProcessSelectionC;
end( )
1.      case 常量和case 值表元素;
2.      用字符串作为case值表元素;
3.      case常量和case值表元素;
4.      case表达式为关系表达式;
16.在“工程选项对话框”中,当默认的checkbox为“true”时,会出现下面哪
27.Type someEnum=(e1,e2,e3=1),则Ord(e1),Ord(e2),Ord(e3)的返回值:
A:0,1,1
B:1, 2, 1
C:0,2,1
D:0,1,2
设计题
题一、
1、自定义过程类型TMyEvent,含有一个参数Value,参数类型string。
2、自定义组件,从TComponent类派生,在Published里声明该事件,使它具有读写的属性。
备注:
请从下面两种结构中选择一种,并添加具体的代码。
(1)控制台结构
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
begin
end.
(2)单元结构
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes;
private
    { Private declarations }
protected
  { Protected declarations }
public
  { Public declarations }
published
  { Published declarations }
  end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TKf]);
end;
                
题2:如图所示,编一个动态生成按钮的程序,它有一个"CreateButton"按钮,单击该按钮将在窗体上动态生成另一个按钮,要求生成的按钮的Name为"BtnHello",Caption为"Hello",并为该控件生成一个Click事件,单击该控件,显示一个"Hello World"的对话框,要求话对话框的标题为"Msg"。
注:有关控件属性必须设置如下:窗体的Caption为Form1,"CreateButton"按钮的Caption为CreateButton。 
题3:动态链接库LogInfo.dll,需要调用其中的两个函数procedure Log(const msg: string)和procedure ClearLog请写出这两个函数在调用该动态链接库(要静态链接)的应用程序中的声明
备注:
题4:完成系统任务栏的隐藏与恢复显示
题5:如图所示,要求实现进度条的进度显示功能。它有一个进度条TProgressBar,用来显示进度,有两个TEdit,MinEdit和MaxEdit,它们分别对应进度条的最小值和最大值。然后点击"ShowProcess"按钮开始显示进度。Max范围不得大于10000,Min的范围不得小于1,Min的值必须小于Max;程序要求作出错检查。   
注:有关控件属性必须设置如下:窗体的Caption为Form1,进度条TProgressBar的Name为ProgressBar1,两个TEdit的Name分别为edtMin和tedtMax,Text的初始值分别为"1"、"100",按钮的Caption为ShowProcess。
  
题6:编程实现一个DLL。 该DLL中有一个输出函数function ChangeColorWordToInt(ColorName : PChar):TColor;stdcall;external 'Color.dll';可以按字符串内容转换为对应的颜色.并返回该颜色值 Red-> CLRed Blue->CLBlue Lime->CLLime Other->CLBlack
编写测试程序来测试该DLL是否工作正常,测试窗体包括一个COMBOBOX1,条目内容为上述颜色值,选中其中颜色可实现MEMO1中字符颜色的改变)   bject);
var
P:pchar;
begin
P:=color_Combo.Items.GetText;

题7:看程序,然后据要求修改程序(最好看后能据要求默写出程序)
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TPet = Class 
public
  procedure Play;virtual; 
end; 
TCat = Class(TPet)     
public
  procedure Play;override;
end; 
Procedure Run(i: TPet); 
begin   
i.Play; 
end;

{ TPet }
procedure TPet.Play;virtual; 
begin 
Writeln('Pet.Play');
end;

{ TCat }
procedure TCat.Play;override;
begin 
Writeln('Cat.play');
end;

//在窗体中编写调用类的程序
var 
cat: TPet;
begin 
cat := TCat.Create;     
Run(cat);
cat.free;
end.
{1.修改前的运行情况为
Pet.Play
2.修改后的运行情况为
Cat.play
}

题8:在下面代码的基础上,声明一个函数常量,并将函数常量的指针指向函数Calc。
备注:
请在下面结构中添加具体的代码。
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;

function Calc(X, Y: Integer): Integer;
begin
Calc:=X+Y;
end;

begin

end. 



题9.自定义一个类:
1、类名为TMyClass。
2、从Tobject继承。
3、定义一个私有方法Mymethod无参数、无返回值。
4、定义一个保护方法SetIndex参数为:Value类型为Integer。无返回值。
5、一个公用方法SetName:Value类型为string。无返回值。
题10.自定义一个类,给该类添加一个属性:
1、类名为TMyControl,从TCustomControl继承。
2、定义一个属性,属性名称为IntegerProp,属性类型为Integer, 并为属性设置一个可以读写的字段。
3、在Uses中写出所使用的单元代码。


  
题11:设计编一个求幂的程序,它有3个TEdit编辑框,一个用来输入底数,一个用来输入指数,一个用来显示求幂的结果,还有一个"求幂"按钮,单击该按钮,将进行幂运算,并将运结果显示在EditResult编辑框中。 形式是底数 指数   结果 
作者: ieqqlin13  发布日期: 2005-10-31 
单选题
01.Delphi擅长构建哪种结构的应用系统?
     A.客户/服务器(C/S)                     B.浏览器/服务器(B/S)
C.终端/应用服务器/数据库服务器               D.IE/应用服务器/数据库服务器
答案:A

02.Delphi6所使用的是哪种高级语言?
     A.Basic语言                       B.面向对象的C语言
C.面向对象的Pascl语言      D.Java语言
答案:C

03.当用户使用Delphi新建一个工程组后,存盘时,将会在相应的目录下形成一个以什么结尾的文件?
     A.VBP               B.BPG                 C.DPR           D.PAS
答案:B

04.DFM文件中存放的是什么信息?
     A.程序员编写的函数   B.程序员编写的类     C.有关窗体的所有信息      D.有关窗体的属性值
答案:D

05.一个程序员应用Delphi开发时,想为应用程序加一些版本信息,应该在哪里填写?
     A.【Project】 【Options】             B.【Project】 【Build All Project】
C.【Tools】 【Contort Options】         D.【Tools】 【Environment Options】
答案:A

06.Delphi6的模板被保存在什么文件中?
     A.DELPHI32.DMT   B.DELPHI32.BPG     C.TEMPLATE. BPG      D.TEMPLATE.DMT
答案:A

07.一个程序员在运行一段代码时,想对某个变量进行跟踪,Delphi6中提供的哪种方法最方便?
     A.在代码中使用游标(cursor)           B.在变量后中加入断点
C.在变量后加一个观察窗(Watch)      D.在变量后中加一个指针
答案:C

08.一个程序员如何利用Delphi6查看调试的程序的线程状态?
     A.通过操作系统的任务管理器窗口查看           B.通过输入命令PS查看
    C.在断点后加一个观察窗(Watch)      D.通过Threads窗口查看
答案:D

09.哪个是Delphi类库中的根类?
     A.TObject类         B.TPersistent类     C.TComponent类   D.TControl类
答案:A

10.哪个是Delphi类库VCL库中所有组件的基类?
     A.TObject类         B.TPersistent类     C.TComponent类   D.TControl类
答案:C

11.可视组件库(VCL)与交叉平台组件库(CLX)有什么区别?
A.VCL是CLX的子集
B.CLX是VCL的子集 
C.VCL只能应用于Windows平台上,而CLX既能应用于Windows平台,又可应用于Linux平台
D.CLX只能应用于Windows平台上,而VCL既能应用于Windows平台,又可应用于Linux平台
答案:C

12.Try...finally语法以什么保留字表示结束?
     A.Over         B.Finally         C.Close       D.End
答案:D

13.函数和过程有什么区别?
A.函数和过程基本上相同,只是有的人习惯称函数,有的人习惯称过程
B.函数和过程基本上相同,函数自身会返回一个某种类型的值
C.函数可以返回多个值,过程只能返回一个值 
D.过程可以返回多个值,函数只能返回一个值
答案:B

14.每个函数都有一个特殊的保留字,是一个预先定义的变量,请选出是哪一个?
     A.Function         B.Begin         C.End       D.Result
答案:D

15.函数和过程都可以接受参数,使用什么方法可不改变参数的值?
     A.值传递         B.中间变量         C.传递引用       D.过程引用
答案:A

16.在面向对象编程语言中,类与对象的关系是怎样的?
A.类是配方,对象是方法
B.对象是配方,类是方法
C.类定义对象的类型,对象是类的实例
D.对象定义类的类型,类是对象的实例
答案:C

17.哪个是Delphi6数据库引擎的配置工具?
     A.ParadoxAdmin         B.Paradox         C.BDEAdmin       D.BDE 
答案:C

18.DBGrid控件怎样与DataSource连接?
     A.将DBGrid的名称设为DataSource的名字
B.将DBGrid的DataSource属性设为DataSource的名字
C.将DataSource的名称设为DBGrid的名字
D.将DataSource的属性设为DBGrid的名字
答案:B

19.如何将现有的桌面型数据库移植为Client/Server环境下?
A.将应用程序放在Client端,数据库放到Server端
B.使用BDEAdmin将应用程序与数据库分离开
C.使用dbExpress来实现
D.使用Data Pump来实现 
答案:D

20.TQueries组件与TTables组件的区别是什么?
A.TQueries组件可以使用SQL语句,而TTables组件不可以使用SQL语句
B.TTables组件可以使用SQL语句,而TQueries组件不可以使用SQL语句
C.TQueries组件是用来进行语句查询的,而TTables组件是创建表的
D.TTables组件是用来进行语句查询的,而TQueries组件是创建表的
答案:A

21.Delphi6中的dbExpress是什么?
A.是一个用于交叉平台的独立数据库层,它提供了用于动态SQL处理的一些方法
B.是一个用于Windows平台的数据库层,它提供了用于所有SQL处理的一些方法
C.是一个用于连接数据库的工具,使利用Delphi开发的应用程序能够与后台数据库连接
D.是一个用于数据库压缩的工具,防止数据库过大
答案:A

22.dbExpress中哪一种核心接口是用来处理查询或存储程序的?
     A.SQLDriver         B.SQLConnevtion         C.SQLCommand       D.SQLCursor
答案:C

23.dbExpress组件中,TSQLMonitor组件是用来做什么的?
A.用于在数据库服务器上运行一个SQL命令
B.用于调试应用程序和数据库服务器之间的通信
C.是一个通用的单方向的数据集,用于使用dbExpress访问数据库信息
D.用于dbExpress数据库的连接
答案:B

24.在Delphi6中什么叫包(Package)?
A.是被Delphi程序所调用的函数集
B.是被Delphi程序所调用的类集
C.是被Delphi程序或IDE所调用的一类特殊的DLL 
D.是被Delphi程序或API所调用的一类特殊的DLL
答案:C

25.在对传统Windows中的动态链接库进行编写时,哪个标准函数是用来关闭DLL的?
     A.LibMain//打开DLL         B.Library         C.Snap       D.WEP
答案:D

26.Delphi用哪个预定义变量指向退出过程的地址?
     A.ExitProc         B.LibExit         C.ExitCode       D.LibEnd
答案:A

27.Delphi6中包的源文件是以什么作为扩展名的?
     A.bpl         B.dcu         C.dcp       D.dpk
答案:D

28.在Windows2000的注册表中,哪个根主键中存储了有关Delphi设置的相关信息?
     A.HKEY_CLASSES_ROOT                 B.HKEY_CURRENT_USER
C.HKEY_LOCAL_MACHINE                 D.HKEY_USER
E.HKEY_PERFORMANCE_DATA
答案:C

29.用什么命令打开Windows2000的注册表?
     A.开始/运行,输入regedit               B.开始/运行,输入regedit32
C.开始/程序/管理工具/计算机管理             D.开始/程序/管理工具/服务
答案:B

30.Delphi在Linux系统中的软件开发平台称作什么?
     A.Delphi           B.Delinux         C.Kylix             D.Kylinux
答案:C

31.Delphi在Linux系统中开发的软件调用哪种组件库?
     A.可视组件库(VCL)         B.交叉平台组件库(CLX)
C.通用组件库(Lib)         D.linux组件库(LinLib)
答案:B

多选题
01.在Delphi6中的对象浏览器中,用户可以对什么进行修改?
     A.ActiveX控件       B.组件的属性         C.函数代码         D.事件代码
答案:B、D 

02.代码动态帮助提供了那些功能?
     A.对象信息提示功能     B.参数提示功能       C.语法模板提示功能     D.表达或求值提示
答案:A、B、C、D 

03.用Delphi编制的应用程序,其主体部分都包括什么?
     A.单元             B.函数           C.组件             D.窗体
答案:A、D 

04.代码动态帮助提供了那些功能?
     A.对象信息提示功能     B.参数提示功能       C.语法模板提示功能     D.表达或求值提示
答案:A、B、C、D 

05.请选出下列组件中,哪个属于非可视的组件?
     A.按钮(Button)   B.标签(Lable)     C.计时器(Timer)      D.数据源(DataSource)
答案:C、D

06.在对象浏览器中有哪几种类型的属性?
     A.简单属性         B.Enumerated属性       C.组合类型的属性           D.编辑器类型的属性
答案:A、B、C、D

07.Delphi中的事件类型分为哪几种?
     A.用户级       B.界面级       C.系统级         D.源码级
答案:A、C

08.Delphi6中将线程的状态分为哪几种?
     A.可执行       B.挂起       C.阻塞           D.为空
答案:A、B、C、D

09.Delphi中异常处理的方法有哪几种?
A.CPU过热时的异常处理                 B.在资源保护时的异常处理
C.处理运行错误的异常处理               D.处理读写数据库错误的异常处理
答案:B、C

10.具备了那些基本特性后,就被认为是面向对象的编程语言了?
     A.耦合       B.多态       C.继承           D.封装       E.遗传     F.抽象
答案:B、C、D、F

11.Delphi6的编程人员使用数据库引擎配置工具,在配置标签下改变了当前设置后,发现使用时,这些设置并未改变,什么方法可以使其发生变化?
     A.重新进行配置       B.将BDE重载       C.重启计算机     D.重载所有有关Delphi的应用
答案:B、C、D

12.Delphi中可选用哪几种方法来过滤数据?
     A.SetRangeStart方法                   B.SetRangeBegin方法   
C.SetRangeOver方法                   D.SetRangeEnd方法
E.过滤属性的方法                       F.过滤索引的方法
答案:A、D、E

13.在Delphi6中,为了连接数据库到用户的界面,哪些组件是必需的?
     A.TstoreProc组件         B.TTables组件         C.TDataSource组件 
D.Data-aware组件         E.Table组件
答案:B、C、D

14.DLL与可执行文件的不同之处是什么?
     A.DLL可以独立运行,而可执行文件要调用DLL才能运行
B.DLL不能独立运行,而可执行文件能够独立运行
C.DLL没有自己的消息队列,而可执行文件可以从Windows的消息队列中接受消息
D.DLL和可执行文件都没有自己的消息队列,只是DLL可以通过系统的消息队列接受消息
答案:B、C

15.在用Delphi6开发程序时,哪些情况下,用DLL比Packages更好?
A.程序模块由非Delohi应用程序所调用
B.DLL不能独立运行,而可执行文件能够独立运行
C.DLL没有自己的消息队列,而可执行文件可以从Windows的消息队列中接受消息
D.DLL和可执行文件都没有自己的消息队列,只是DLL可以通过系统的消息队列接受消息
答案:B、C

16.Windows的消息传递机制由哪几个部分组成?
     A.消息队列         B.消息循环         C.窗口函数     D.消息输出
答案:A、B、C

17.Windows的消息可以分为哪几种类型?
     A.系统消息         B.用户消息         C.应用程序消息     D.窗体消息
答案:A、C

18.XML是什么?
     A.可扩展的标记语言               B.是一套定义语义标记的规则
C.是一种元标记语言               D.是一种HTML语言
答案:A、B、C

19.SGML具有强大的功能和可扩展性,但为什么没有得到广泛的应用?
     A.SGML太复杂                   B.SGML太贵
C.SGML漏洞太多                 D.主要的浏览器厂家都拒绝支持SGML
答案:A、B、D

20.Form的BorderStyle属性,哪种状态下有最大最小化按钮:应该为多选
     A.bsNone      B.bsToolWindow
     C.bsDialog      D.bsSizeable
     E.bsSizeToolWin      F.bsSingle
答案:D、F 

21.下列哪些值可以赋给TPen类中的Style属性?
     A.psDash      B.psDot      C.psClear      D.psSolid
答案:A、B、C、D 

22.下列不正确的是:
     A.可以直接调用函数取代非var形参,将函数的值传给子程序
     B.可以指定表达式取代非var形参,表达式的类型要与相应形参类型一致
     C.可以将数值、函数、常量传递给var形参
     D.如果指定变量为实参,变量的值将传递给子程序
答案:C、D

23.Delphi中的时间类型,以下描述正确的是?
     A.Delphi中使用Double类型作为时间类型,而非Integer
     B.假如TDate类型的变量为0,那么其含义表示公元元年
     C.其正值表示公元后,其负值表示公元前
     D.可以利用函数DateToStr函数把TDate类型转变为字符串类型
答案:A、D 

24.继承关系正确的是:
     A.TControl继承TComponent      B.TComponent继承TControl
     C.TComponent 直接继承TObject      D.TTimer继承TComponent
答案:A、D

25.请选出哪些属于面向对象Pascal语言的数据结构
     A.动态数组       B. 字符串         C.可变类型Variant      D.类和对象
答案:A、D 
作者: ieqqlin13  发布日期: 2005-10-31 
1. Delphi中,__bpl___和DLL一样,可提供系统功能扩展 (填空题)
2. 类的属性:多态、抽象、封装、继承(填空题)
3. showmodal(填空) (模态窗体)
4. with(填空)//答案不确定
5. TMenu是一个___B____
a. TControl b.TComponent c.TCoolGraphicControl
6. OLE的基本数据类型与Delphi6数据类型对照,哪一个是正确的?P180
7. 不属于分布式组件对象标准的是哪个?P395   CORBA   DCOM   RMI
8. 只有虚拟和动态方法可重覆盖,但所有方法都可以重载。错
9. TButton的onClick事件中Sender参数的默认值是哪一个? A
a.该组件 b.窗体 c. …d….
10. 在自定义一个TButton类的组件TMyButton,希望TMybutton拥有TButton的大部分特性,但是不希望公布出已经公布的一个TButton属性,并且希望在新增一些公布属性,请问,TMyButton从哪个类型继承? D
a.TControl b.TButton c.TWincontrol d.TbuttonControl
11. TImage与TButton最近的共有父类是什么?   Tcontrol
12. 属性编辑器是从哪个父类继承下来的?     TPropertyEditor
13. 在使用TDataSetprovider开发C/S结构的程序时,哪一个是默认的通信机制? D
A.Mail slots   B.NetBEUI   C.IPX/SPX D分布式组件对象模型COM
13.TCanvas组件中Handle能够在哪个Win32结构中实现 A
A device context   B Window handle   C palette D Bitmap
14.Application Onhint 事件处理可柄赋值时,哪一条语句是正确的?(假定MyHintHandler定义为TnotifyEvent) A
Application.onhint:= MyHintHandler;
Application.onhint:= MyHintHandler^;
Application.onhint:=@ MyHintHandler;
Application.onhint.assign(MyHintHandler);
15.在Delphi6可以导入Real Player Acitvex Control这个Activex控件对吗? OK
16.以下关于VCL控件与AciveX控件,描述正确是( A)
A.TTreeView在转换成ActiveX控件需要大量工作
B.TWinControl类型的VCL控件可以转换成AciveX控件
C.VCL比ActiveX 具有更广泛的适用范围
D.TDBGrid可以转换成ActiveX控件
17.下面关于bpl与DLL说法错误的是   A
A.Bpl是Delphi VCL专用的,它在其它语言写的应用程序中无法使用
B.bpl也可以用loadlibrary加载
C.bpl是数据与代码共享,而在DLL里只有代码共享
18.如果将TStoredProc和一个存储过程连接,那么哪种情况能够把TDataSource组件附在TStoredProc上? A
A.该存储过程返回一个结果集
B.用TStoredProc的Open方法来调用该存储过程
C.用TStoredProc ExceProc方法调用该存储过程
D.在设计期把TStroedProc设置为Active
19.所有的Delphi应用程序都能转移到Linux系统中,用Kylix反编译而不需要任何改动( X )
20.写一个组件时候,Register过程需要下列中的哪一条信息? 
RegisterComponents(‘组件页’,[组件类名称列表]); 无答案
A.该组件的共同祖先
B.该组件方法名称
C.该组件所有属性的输出列表
D.该组件所有事件的名称
21. IDL(Interface Definition Language) : ABCDE 
A. 是CORBA体系中的一个重要概念。
B.IDL就是实现CORBA与语言无关的特性。
C.IDL仅仅定义接口,而不定义接口的具体实现。
D.他不是真正的编程语言。
E.IDL的好处是使高层设计人员不必考虑实现细节而只需关心功能描述。
22. 支持MIDAS系统的组件是什么? 远程数据模块
(TremoteDataModule,TMTSDataMoudle,TCORBADataModule)和TDataSetProvider
23.关于内存映射文件的应用说法正确的是? P14三点
利用内存映射文件可以实现多个进程共享数据
利用内存映射文件实现调入和执行.exe和.dll文件,可以节省了交换文件的空间,减少了文件调入的时间
。。。。。。
24关于Sendmessage的一些说法   P6
25.关于postmessage的说法 P6
26.操作题:
1.在代码浏览器中怎样显示事件和方法。 右击代码浏览器左边,--properties- show declaration syntax
2.假如我的MyPackage.dpk的源文件在C:\Mypackage路径下………..( 答案:Tools--&#61664;Environment Optons--&#61664;Library页)
3.设置不自动停靠的那题 Tools--&#61664;Environment Optons&#61664;preference
4.不显示备份文件 Tools&#61664;Editor Options&#61664;Display&#61664;Create Backup File
27.TXYZComponent它生成位图之后的名称???
全大写 全小写 一半大写,一半小写
28.属性编辑器跟组件编辑器的相关内容
29.多线程的优点 P27-P28
30.一个组件的caption不在属性编辑框中改而用代码如下表示,对或错
Procedure myjjjjj;       代码没错,但不知题目何意?
Begin
  Btn.caption:=’dfzadf ’;
End;
31.对象和指针的有考到,,要看p99
32.Get和set是read和write的???见102
  read说明该属性是可读的,通常情况下读方法以get开始,但这不是绝对的,不用get也可以;写方法类似
33.关于MIDAS说法正确的是?
a. C/S是一个典型的MIDAS         //三层C/S才是典型的MIDAS
b….. 瘦客户端
c. ……datasnap
d……
34.从delphi6导出数据到excel2000的步骤包括什么?(多项见201页)
1. 向uses中加入一个comobj
2.Myobject:=createolelbject(excel)
35.拉动滚动条时,屏幕会闪烁,用下列的哪一个属性可消除闪烁?
A.self.DoubleBuffered := true;
B.
C.
D.
36.下列从Listbox中取出数据的方法正确的有哪些?
listbox1.Items.Text;   //取出所有文本
listbox1.Items.GetText; //指针方式取出所有文本 
var
  p:PAnsiChar;
begin
  P:=listbox1.Items.GetText;
  memo1.Lines.Add(string(p));
end;
listbox1.Items.Strings[index] 取出某一行文本
其它对象如Memo1.lines.Assign(Listbox1.items) //也可以取出所有文本对象
//下面这两种方法返回的都是空,所以不是正确的做法
listbox1.Items.values   //取出其中添加的对象文本
listbox1.Items.Objects //取出其中的对象指针
37.包与DLL的区别?P74 
38.可视组件类库(VCL)对象继承树要看一下 P88
39.有关COM的相关概念说法正确的是 P171(多项选择)

1. 编程实现一个DLL。 该DLL中有一个输出函数function ChangeColorWordToInt(ColorName : PChar):TColor;stdcall;external 'Color.dll';可以将上图中下拉框中的字符串按下表转换为对应的颜色.并返回该颜色值 Red-> CLRed Blue->CLBlue Lime->CLLime Other->CLBlack
使用本题附带的测试程序来测试该DLL是否工作正常
library Color;
uses
SysUtils, Classes, Graphics; //加入graphics单元
{$R *.res}
function ChangeColorWordToInt(ColorName : PChar):TColor;stdcall;
begin
if ColorName = 'Blue' then result := clBlue
else if ColorName = 'Red' then result := clRed
else if colorName = 'Lime' then result := clLime
//else if colorname = 'Other' then result := clBlack
else result := clBlack;
end;
exports //导出DLL函数
ChangeColorWordToInt;
begin
end.
//测试的时候只要注意引入该DLL函数即可,比如放在interface部分引入,跟在窗体变量的定义后
var
Form1: TForm1;
function ChangeColorWordToInt(ColorName : PChar):TColor;stdcall;external 'Color.dll';
2. 修改程序:
1、修改下列代码使两个类中的成员函数play成为虚函数。2、按顺序分别写出修改前和修改后程序运行的输出结果。
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TPet = Class 
public
  procedure Play; 
end; 
TCat = Class(TPet)     
public
  procedure Play;
end; 
Procedure Run(i: TPet); 
begin   
i.Play; 
end;
{ TPet }
procedure TPet.Play;
begin 
Writeln('Pet.Play');
end;
{ TCat }
procedure
3. 动态链接库LogInfo.dll,需要调用其中的两个函数procedure Log(const msg: string)和procedure ClearLog请写出这两个函数在调用该动态链接库(要静态链接)的应用程序中的声明
备注:
请从下面两种结构中选择一种,并添加具体的代码。
(1)控制台结构
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
procedure Log(const msg: string);stdcall;external ‘LogInfo.dll’;   //放在此处
procedure ClearLog;external ‘LogInfo.dll’;
begin
end.
(2)单元结构
unit Unit1;
interface   //放在此处
procedure Log(const msg: string);stdcall;external ‘LogInfo.dll’; 
procedure ClearLog;external ‘LogInfo.dll’;
implementation
4. 如图所示,编一个动态生成按钮的程序,它有一个"CreateButton"按钮,单击该按钮将在窗体上动态生成另一个按钮,要求生成的按钮的Name为"BtnHello",Caption为"Hello",并为该控件生成一个Click事件,单击该控件,显示一个"Hello World"的对话框,要求话对话框的标题为"Msg"。
注:   有关控件属性必须设置如下:窗体的Caption为Form1,"CreateButton"按钮的Caption为CreateButton。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
  Button1: TButton;
  procedure Button1Click(Sender: TObject);
private
  DynButton: TButton;
  procedure OnMyClick(sender: TObject);
  { Private declarations }
public
  { Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
DynButton := TButton.Create(self);
DynButton.Name := 'BtnHello';
DynButton.Caption := 'Hello';
DynButton.onClick := OnMyClick;
DynButton.Left := button1.Left +Button1.Width +30;
DynButton.Top := button1.Top;
DynButton.Parent := self;
DynButton.Visible := true;
end;
procedure TForm1.OnMyClick(sender: TObject);
begin
Application.MessageBox('Hello World','Msg');
end;
end.
5. 1、自定义过程类型TMyEvent,含有一个参数value,参数类型string。
2、自定义组件,从TComponent类派生,在Published里声明该事件,使它具有读写的属性。
备注:
请从下面两种结构中选择一种,并添加具体的代码。
(1)控制台结构
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
begin
end.
(2)单元结构
unit Unit1;
interface
type 
Tmyevent=procedure(value : String)of Object;
TmyComponent=class(Tcomponent)
Private
  FmyEvent:TmyEvent;
Published
  MyEvent:TmyEvent read FmyEvent write FmyEvent;
End;
implementation
6. 如图所示,要求实现进度条的进度显示功能。它有一个进度条TProgressBar,用来显示进度,有两个TEdit,MinEdit和MaxEdit,它们分别对应进度条的最小值和最大值。然后点击"ShowProcess"按钮开始显示进度。Max范围不得大于10000,Min的范围不得小于1,Min的值必须小于Max;程序要求作出错检查。   
注:有关控件属性必须设置如下:窗体的Caption为Form1,进度条TProgressBar的Name为ProgressBar1,两个TEdit的Name分别为edtMin和tedtMax,Text的初始值分别为"1"、"100",按钮的Caption为ShowProcess。
7. 1、自定义一个过程类型TGetPropProc,该类型有一个参数Prop,类型为IProperty。
2、定义一个类TPropertyEditor,该类有一个过程GetProperties,该过程有一个参数,为TGetPropProc类型,请写出有关代码。
3、在Uses中写出所使用的单元。
备注:
请从下面两种结构中选择一种,并添加具体的代码。
(1)控制台结构
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
begin
end.
(2)单元结构
unit Unit2;
interface
uses
Classes, DesignIntf;
type
TGetPropProc=procedure(const Prop:IProperty)of object;
TPropertyEditor=class
  procedure GetProperties(PropProc:TGetPropProc);
end;
implementation
{ TPropertyEditor }
procedure TPropertyEditor.GetProperties(PropProc: TGetPropProc);
begin
end;
end. 
作者: ieqqlin13  发布日期: 2005-10-31 
1.在下列有关记录和类的说法中,不正确的是(E)
A)记录中没有继承关系,而类有
B)记录中没有声明方法
C)记录中的值不能被自动初始化
D)记录不能进行任何住处隐藏,其所有内容实现从外部都是可见的,即都是分用的.
E)类可以使用WITH语句,而记录不能.
2.一个类可以定义多个构造函数,这体现了OBJECT PASCAL语言的(E)
A)      方法重载 B)继承性   C)封装性   D)抽象性   E)多态性
3.下列说法正确的是(E)
A)      任何组件有自已的拥有者,任何组件拥有者必须是APPLICATION或者 FROM 对象//tcomponent类型就可以做为拥有者
B)      任何窗口控件均可以当父控件//部分
C)      父控件负责子控件销毁//应该是控件的拥有者
D)      任何组件均可有自已的父组件,任何组件的父组件都是FORM对象
E)      TCONTROL类引入了PARENT属性,类型为TWINCONTROL。
4.下列控件中,属于图形控件的是( D )
A)TBUTTON   B)TBITBTN   C)TFORM   D)TSPEENBUTTON E)TDBIMAGE
5.下列说法正确的是(A)
A)TSRINGLIST类提供了在字符串列表中排序和对字符串更改做出反应的能力
B)TLIST类对象存储的是对象指针的数组
C)TQUEUE是DELPHI对WINDOWS消息对列的封装
D)TQUEUE、TSTACK中的PUSH和POP方法、操作完全相同
6.有如下枚举类型,则GREEN的序数值为(B)
TYPE MENUM4=(RED,BLUE,YELLOW,GREEN,PINK,BLACK)
A)4 B)3   C)0   D)6
7.下列程序执行后,变量Z的值为(C)
VAR
Z,J,I,K:INTEGER;
BEGIN
Z:=7;J:=8;K:=4;
FOR I:=J TO K DO 
BEGIN
Z:=Z+1;
Z:=Z+1;
  END
A)13   B)3   C)7   D)8
8.在TRY……EXCEPT语句块中,可以使用多个EXCEPT语句来处理多种不同类型的异常(B)
A)      正确B)错误
9.对下列程序结构正确的答案是()
TRY
….. 
  TRY
…….
  EXCEPT
语句A
  FINALLY
语句B
  END;
A)语句A和B都可能会执行
B)语句A可能执行,语句B总要执行
C)语句A总要执行,语句B可能执行.
D)语句A和B总要执行
10.关于多维动态数据正确的是(B)
A)可以动态设定各维的长度,且各维下标均从0开始
B)可以动态设定各维的长度,且各维下标均从0开始
C)只能动态设定第一的长度,而其化各维也纳的长度均与第一维的长度相同,但只有第一维下标从0开始
D)只能动态设定第一的长度,而其他各维的长度均与第一维的长度相同,且各维下标从0开始.
11.DELPHI中,.5是正确的整型常量(B)
A)正确 B)错误
12.DELPHI函数中CONST与VAR类型的形参用法是一样的(B)
A)正确 B)错误
13.已知单引号”’”字符ASCII码值为39,下列表达式WRITELN(‘This is ‘#39’xxx#39string’);的值为(A)
A) This is ’xxx#39string
B) This is ‘xxx’string
C) This is ’’’xxx’string
D) This is xxx string
E) This is string
14.下列代码是否可以通过编译B()
TYPE
TMYTYPE=(tma,tmb,tmc);
Procedure mypro;
Var
  I:tmytype;
Begin
For I:=tmc downto tma do begin
  I:=succ(i);
  Showmessge(inttostr(ord(i));
End;
End;
A)可以     B)不可以
15.当窗体创建时候,并且VISIBLE为TRUE,窗体显示时,事件响应顺序是B
A)ONACTIVE ONCREATE ONSHOW ONPAINT
B)ONCREATE   ONSHOW   ONACTIVE   ONPAINT
C)ONCREATE   ONACTIVE   ONSHOW   ONPAINT
D)ONACTIVE   ONSHOW   ONCREATE   ONPAINT
16.不可以作为FOR循环的变量是(A)
A)BOOLEAN   B)子界   C)CHAR   D)SET//集合类型
17.集合类型变量中所包含的元素,其序号范围只能是(C)
A)-127-128   B)0..256     C)0..255   D)0..65535
18.在下列后缀名对应的文件中,哪一个不是动态连接库
A)FON   B)INI   C)BPL   D)DRV
19.在下列例程声明中,哪些是正确的A
A)      FUNCTION SUM(X,Y:INTEGER):STRING
B)      PROCEDURE SUM(X:INTEGER=1;Y:INTEGER)
C)      PROCEDURE SUM(VAR X:INTEGER,Y:INTEGER)
D)      FUNCTION SUM(VAR X:INTEGER;Y:INTEGER):INTEGER;
20.在下列关于例程参数XXX,不正确的是A
A)可以将类型匹配的变量,常量或表达式作为VAR参数传递
B)可以将表达式作为非VAR实参传递,但表达式的类型必须与形参的类型一致
C)如果将函数调用作为非VAR实参传递,只要函数的返回值类型匹配形参类型,就可以将该函数值传入子程序
D)如果将类型匹配的变量作为VAR实参传递,变量的值将被传入子程序
21.下列表达式为0的是(C)
A)ROUND(4.5) MOD TRUNC(7.4)
B)ROUND(4.5) MOD TRUNC(6.4)
C)ROUND(4.5)MOD TRUNC(4.4)
D)ROUND(4.5)MOD TRUNC(3.4)
22.有如下变量定义,则SIZEOF(S)的返回值是(B)
VAR 
S:STING[30];
A)256   B) 31   C)30   D)255
23.设计一个MDI应用程序时,假设主窗口的名字是MAINFORM,而子窗体的定义是CHILD:TCHILDFORM.在下列生成子窗体的语句中,哪一句是错误的?D
A)CHILD:=TCHILDFORM.CREATE(MAINFORM)
B)CHILD:=TCHILDFORM.CREATE(APPLICATION)
C)CHILD:=TCHILDFORM.CREATE(NIL)
D)CHILD:=TCHILEFORM.CREATE(CHILDFORM)
24.用于发送电子邮件的控件是(C)
A )TNMMAG
B)TNMMMMTYP
C)TNMSMTP
D)TNMPOPS
25.在客户端使用TCLIENTSOCKET组件连接服务器时,连接前必须设置的属性是(D)
A)ADDRESS HOST SERVICE PORT
B)ADDRESS或HOST SERVICE PROT
D)ADDRESS HOST PORT
26.向控件COMBOBO1中添加一个字符串选项,应当使用下列哪一句(D)
A)COMBOBOX1.TEXT:=’NEW ITEM’ 
B)COMBOBOX1.VALUE:=’NEW ITEM’
C)COMBOBOX1.ITEMS.ADDSTRING(‘NEW ITEM’)
D) COMBOBOX1.ITEMS.ADD(‘NEW ITEM’)
27.使用哪一种对齐方式时,组件的宽度和高度会同时自动调整B
A)ALBOTTOM B)ALCLIENT   C)ALLEFT   D)LARIGHT E)LATOP
28.下列哪个事件是BITBTN有而SPEENBUTTON没有的( B)
A)ONCLICK B)ONENTER C)ONMOUSEMOVE   D)ONMOUSEDOWN
29.COMBOBOX在哪种样式下可作为EDIT来使用(A。C )
A)CSDROPDOWN   B)CDDROPDOWNLIST   C)CSSIMPLE   D)CSOWNERDRAWVARIABLE
30.在下列几个CANVAS方法中,哪一个方法使用的参数最少(D )
A)ARE//8画一段弧
B)ELLIPS//4用与绘制矩形
C)POLYLINE//array of tport//有点组成的数组
D)LINTTO//2
E)DIE//8用与绘制椭圆A
31.窗体类POSITION属性的默认值为( )
A )PODESIGNED   B) POSIMPLE       C)PODEFAULT 
D)PODEFAULTPOSONLY               E)PONORMAL
32.下列哪一个属性值可以用来为TBRUSH类的STYLE的属性赋值( C )
A)PSINSIDEFRAME   B)CLMAROON   C)BSDIAGCROSS
//bsSolid,bsCross,, bsClear, bsBDiagonal, bsHorizontal, bsFDiagonal      ,bsVertical
D)TSTABS         E )FSSTRIKEOUT
33.有关TCONTROL类的CONSTRAINTS属性,下列哪一个描述是正确的( A )
A)      该属性用来设置组件对象的最大、最小宽度和高度
B)      该属性用来设置组件对象与其父对象的相对位置的显示位置
C)      该属性是一个指针类数组,用来指向窗口中的的其它对象
D)      该属性是一个整形值,用来存放该窗口中所有控件的对象
E)      以上都不对
34.关于DBEXPRESS单向数据集,下列说法不正确的是(D )。
A)同时也是只读数据集
B)数据过滤不能使用
C)只有FIRST和NEXT两种导航方法可以使用
D)可以使用所有的数据感知控件显示,但是不能使用POST方法进行修改。
35.设OBJ为某个类变量(对象),在创建实例之后,不仅可以使用SIZEOF例程返回分配给OBJ变量的存储空间大小,而且可以使用OBJ.INSTANCESIZE方法返回分配给对象实例存储空间的大小.A
A)正确   B)不正确
36.下面关于窗体模板叙述的不正确的是(C)
A)      可以通过窗体模板创建应用程序的主窗体.
B)      可以通过窗体模板创建应用程序的一般窗体
C)      窗体模板中COPY来创建窗体时,窗体的改变不会影响模板窗体.
D)      窗体模板中USE来创建窗体时,窗体的改变不会影响模板窗体.
E)      窗体模型中INHERITED来创建窗体时,窗体的改变不会影响模板窗体.
37.处于可编辑状态的数据集只要执行POST方法即可对数据集的修改更新到数据库B
A)正确   B)错误
38.如果要强制将一个指向派生类的指针转换为指向其祖先类,就当使用( )关键字,反这亦然.E
A)in   B)const       C)is     D)class   E)as
39.创建一个WEB服务器应用程序时,其APPLICATION对象与一般WINDOWS的APPLICATION对象完全相同,而区别在于WEB服务器应用程序既可以生成动态链接库,也可以成为一般的可执行文件.B
A)正确   B)错误
40.下列关于dfm 文件的一些说明哪个是正确的?B
A.      dfm文件包含了对应Pascal单元文件的编译后中间代码。
B.      dfm文件保存着一个窗体和窗体拥有的对象的published属性。
C.      dfm文件是编译时产生的符号表,是为了使优化提高编译速度而产生的。
D.      dfm文件是文本文件,用于保存编译器需要用到的pascal文件的符号表
41窗体上放置了一个Tpanel类的Panel1,如果定义了Panel1的OnMouseDown,OnMouseup,Onclick,OnDblclick,那么,当在此Panel上双击鼠标时,事件发生的顺序是A
A)OnMouseDown—>Onclick—>OnMouseup—>OnMouseDown —>OnDblclick—>OnMouseup
B)OnMouseDown—>OnDblclick—>OnMouseup
C)OnMouseDown—>Onclick—>OnMouseup —>OnMouseDown—>Onclick—>OnMouseup
D)OnMouseDown—>Onclick—>OnMouseup —>OnDblclick—>OnMouseDown—>OnMouseup
42.有关Assign的说法哪个是正确的?C
TmyComponent=Class(TComponent)
-------
Var A,B: TmyComponent;( )
A)A.Assign(B)的作用是实现对象的引用参考的赋值,作用与A:=B语句是相同的。
B)A.Assign(B)语句是不成立的,Assign语句作用是判断一个对象的指针是否为NIL。
C)A.Assign(B)实现的作用是对象间内容的复制,其作用与A:=B在大多数情况下是不同的。
D)A.Assign(B)的作用是实现对象间内容的复制,其作用与A:=B这样的语句是相同的。
42.在操作一个职工信息数据表时,需要在更新职工年龄前对输入的年龄做合法性检查,编写语句在数据集的Before Post事件中检查输入的年龄

43.下面对象继承关系中不正确的是 D 
A)Tobject->Tpersistent->Tcomponent
B)Tpersistent->Tcomponent->Ttimer
C) TwinControl->TscroclWinControl->Tform
D) Tcontrol->TGraphicControl->TwinControl
44.以下消息函数正确的使用方法是D
var Amsg:TMsg;     // TMsg encodes the information from a Windows message
BMessage:Tmessage;   // TMessage represents a Windows message
A. perform(Bmessage,0,0)
B .sendMessage(handle, Bmessage,0,0) 
C. postMessage(handle, Bmessage,0,0)
D. Dispatch(BMessage)
45.一个XML文档(DOM)解机器将文档的全部内容加载到内存中的一个树型结构中A
A 错   B 正确
46.窗体上放置一个DBGrid用来显示数据集AQuery中的字符类型字段FieldA和FieldB的内容,其中FieldA在DBGrid的第一列显示,FieldB在DBGrid的第二列显示,怎样使字段FieldB在DBGrid中的显示标题居中对齐B
A) 设置Aquery.FieldByName(‘FieldA’) Alignment:=taCenter
B) 上两种都可以
C) 设置DBGrid.Colums[0].Title.Alignment:=taCenter
47窗体产生时事件次序   B   2
A)Creat->show->resize->active
B)Creat->show-> active->resize
C)Creat-> resize-> active->show
D)Creat-> active->show->resize
48.已知有说明var s:string;下列程序段中的错误为( D)
Case S of 
‘book-A’:ProcessSelectionA;
‘book-B’:ProcessSelectionB;
‘book-C’:ProcessSelectionC;
end         
A)case 常量和case 值表元素;
B)用字符串作为case值表元素;
C)case常量和case值表元素;
D)case表达式为关系表达式;
49.在“工程选项对话框”中,当默认的checkbox为“true”时,会出现下面哪一种情况()

50.Type someEnum=(e1,e2,e3=1),//枚举类型,则Ord(e1),Ord(e2),Ord(e3)的返回值:A
A)0,1,1
B)1, 2, 1
C)0,2,1
D)0,1,2
51.隐藏DBNAVIGATOR的一个命令按钮用属性 visable     实现
52.为了便父子表的修改一起被更新,应启用TDATABASE handleshared 处理
53.只有将数据集(DATABASE或称数据设置)的 exclusive     属性设置为TRUE,才可使数据集的方法APPLYUPDATES可用.
54.在数据集中使用一个cachedupdates属性与三个 applyupdates , cancelupdates,revertrecord ,           方法实现了高速缓存更新. 
55.TDATABSE有方法CNACELUPDATES,则TDATASET有,该句叙述对吗?错
56.该叙述正确吗?DATASNAP是由MIDAS演变过来的,是一个能提供远程数据访问和同步处理分布式应用系统程序的系统,是利用DCOM,TCP/IP或OLE在WINDOWS平台上构造分布式应用程序的系统.
57.在TDATABASE中BEFOREEDIT在什么时候被触发   在对字段进行编辑前触发           
58.要使TQUERY的返回记录集可被修改应设置属性   requestlive       的值为 true     
59.数据库中的查找分类索引查找, 直接查找两类,对于语句dtmlorders.qryorders.locate(‘order_key’,ordertofind,locaseinsensitive),dtmlorders对象(据名字)
是 tform 类的对象, qryorders是tdataset类对象,locate是 直接     类型的查找,
它的三个参数分别代表 字段名 , 要查找的值   , 选项       。
60.有程序,query1属性设置database为dbdemos,sql为”select * from country.db”,active为true,datasource1 的 dataset属性为query1,dbgrid1的datasource属性为datasource1,对form1的button1编写的代码如下,请解释各语句的功能。

procedure TForm1.Button1Click(Sender: TObject);
var
I,code:integer;
Varparam:string;
Value:real;
begin
IF form2.ShowModal =mrok then
begin
query1.Close;
query1.SQL.Clear;
query1.SQL.Add(form2.Memo1.text);
if query1.Params.Count=0 then
  query1.Open;
else
begin
  query1.Prepare;
  for i:=0 to query1.Params.Count-1 do
  begin
    varparam:=inputbox('可变参数','输入可变参数:'+query1.params.name+'的值','');
    val(varparam,value,code);
    if code:=0 then
      query1.ParamS.Value:=value
    else
      query1.params.asstring:=varparam;
  end;
  query1.Open;
end;
end;
end;
若FROM2在程序运行中创建,而非项目中创建,则上述程序作怎样的修改.
为上述程序加上出错处理.
61.TFIELDS对象的按创建方式的不同分为 静态字段与永久字段类型,设为表COUNTRY.DB的每个字段都创建了永久对象,则引用与COUNTRY.db的字段’NAME’对应的永久字段有三种方式,分别是
query1.fieldbyname(‘name’);
query1 [‘name’];//不确定 
query1.query1name.asstring;     ,             ,           .
62.属性可实现字段对象标题的改变.
63.字段对象ONVALIDATATION是事件可用于完成 字段的有效性检查 编程?
64.FINDNEAREST可用于TQUERY组件吗?不行
65.重做第五章的例题,其中与数据库TTABLE与TDATASOURCE组件放在数据模型中  
 

                                

查看回复