Borland 基础与应用开发课程认证试题整理集四
- 摘要:试题91哪些是动态连接库文件:bpl,dll,fon,drv试题92动态连接库的好处:1.如果不同的程序使用相同的DLL,只需在内存中装载该DLL一次即可。2.对于复杂程序的维护更加方便。仅需维护易于维护的DLL即可。3.使用DLL存储资源如字体、设备驱动程序、不同语言的字符串、位图图标等。4.DLL独立于编程语言。试题93由外部程序调用的DLL函数或过程必须遵守下列规则:1.它必须列在exports子句中,使其可在外部看到;2.输出函数应被声明为stdcall
- 标签:Borland 应用开发
试题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 类型判断caozuofu.html" target="_blank">操作符 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;