当前位置:文档之家› 利用DELPHI多线程机制实现PC机与PLC之间的串行通信

利用DELPHI多线程机制实现PC机与PLC之间的串行通信

利用DELPHI多线程机制实现PC机与PLC之间的串行通信
利用DELPHI多线程机制实现PC机与PLC之间的串行通信

利用DELPHI多线程机制实现PC机与PLC之间的串行

通信

张海燕袁平波

摘要主要介绍了在DELPHI环境下如何利用多线程机制实现可编程控制器(PLC)与上位PC机之间的串行通信,对该系统的特点、软件设计方法进行了具体论述。关键词多线程机制串行通信

针对合肥国家同步辐射光源200Mev直线加速器的高精度稳流电源,我们研制了一套强干扰环境下电源的计算机控制系统。在考虑系统设计方案时,选用OMRON PLC-C200H系列产品作为下位机,放置在电源内部,并与上位机PC之间用光缆通过SYSWAY方式通讯,实现系统监测和控制功能。

软件系统是对电源实现计算机控制的核心部分。本控制软件采用Delphi 3.0作为开发语言,平台为Windows 98。其中PLC与上位PC机之间的通信是整个系统的关键。由于串行通讯具有线路简单、应用灵活、可靠性高等一系列优点,并且普通PC上均带有串口,可以方便实现,所以本系统PC与PLC之间采用了串行通信。同时为了有效克服串口通信中的停滞和反应不及时现象,提高工作效率,引入DELPHI的多线程工作模型。

1 编制串行通信程序

在Delphi环境下对串口的编程是通过Windows的API函数调用来实现的。基本过程为:

(1)打开串口,获取串口句柄。采用CreateFile函数,其原型为:

CreateFile(szDevice, fdwAccess, fdwShareMode, Ipsa, fdwCreate, fdwAttrsAndFlags, hTemplatrFile)

第一个参数给出要打开的串口逻辑名,如揅“COM2”

第二个参数指定了端口访问方式,即标志GENERIC.READ为读方式,GENERIC.WRITE为写方式;通常在设置中两个标志均使用,即采用读写方式,fdwAccess=GENERIC.READ GENERIC.READ or GENERIC.WRITE。

第三个参数指定该端口的共享属性,设置为0。

第四个参数引用安全属性结构,将其设为NULL。

第五个参数指定打开文件的方式,设置为OPEN-EXISTING。

第六个参数描绘文件的各种属性,对串口一般设为0。

最后一个参数是指向模板文件的句柄,对串口设为NULL。

(2)对串口进行设置。采用以下两个函数:

BOOL GetCommState (hComm, &dcb)

BOOL SetCommState (hComm, &dcb)

其中第一个参数为打开的串口句柄,第二个参数为指向DCB结构的指针。在打开串口后,可先用GetCommState函数读入串口状态,并得到串口的缺省设置,然后重新设置需要改变的DCB函数,并用SetCommState函数将其返回。

(3)读/写串口。采用函数为:

ReadFile (hComm, inbuff, nBytes, &nByteRead, &overlapped)

WriteFile (hComm, outbuff, nToWrite, &nActualWrite, &overlapped)

(4)通信完毕释放串口。所用函数为:CloseHandle(hComm)。

同时串口通信必须遵从OMRON-HOSTLINK特定协议,通信数据格式要符合协议所规定的上位机链结命令格式。

从上位机发送一个命令时,按下述的格式排列命令数据:

整个系统采取上位机主动的通讯方式,将下位机与上位机的编程融为一体,上位机每隔三秒钟向PLC发送读取数据命令。PLC内部不需要用特定的梯形图编程语言来作下位机程序,增加了系统的通用性,减少了软件接口所带来的工作量。

2 引入多线程机制

在串行通信中,上位机所接收的通信往往是异步的、突发性的。在通讯模块程序中引入多线程,即创建专门的通信线程实现对串口的访问。这种方法可以有效地克服串口通信中的停滞和反应不及时现象。

线程是进程内的一个执行单元,它是操作系统分配CPU运行时间的基本实体。一个进程可由多个线程组成。各线程共享进程的虚拟空间和操作系统为此所分配的系统资源。多任务操作系统将处理器的运行时间分成小的时间片,并分配给多个线程,每个线程在指定的时间片内运行。

多线程的DELPHI应用程序在运行时,操作系统首先创建VCL主线程,由它创建应用程序主窗口,并开始应用程序消息循环。然后VCL主线程根据应用程序的要求创建多个工作线程。在视化构件库中,通过线程类(Tthread)实现工作线程的所有功能。

具体实现为:软件创建一线程来不断读取PLC发送的串口数据,然后向主程序发送一数据接收完毕的消息;主程序定时向PLC发送读取数据命令,并在接收到消息后根据接收的数据刷新界面。两个线程之间的通信通过消息(Message)实现。

程序流程图如图1、图2所示。

图1 上位机主程序流程图

图2 上位机线程流程图

3 程序

下面是利用多线程机制编制的串口接收程序部分代码,其中包括对接收和发送数据格式的处理。

Procedure TComm.Execute; //线程执行过程

Begin

While True do Begin //无限循环

Wait := WaitCommEvent(hcom, 0, lpol);

//等待串行口事件: 接收到字符;

if Wait Then Begin

waitforsingleobject(post_event,infinite);

//无限等待同步事件置位;

resetevent(post_event); //同步事件复位;

//向用户窗口发接收完毕消息;

PostMessage(comctlfrm.Handle, WM_COMMNOTIFY, 0,0);

end;

end;

end;

procedure https://www.doczj.com/doc/4a6494161.html,minitialize; //串行口初始化过程

Begin

hcom:=createfile('com2', generic_read or generic_write, 0,

nil, open_existing, file_attribute_normal or file_flag_overlapped, 0);

//打开串行口

if hcom=invalid_handle_value then

else

setupcomm(hcom, 4096, 4096);

//设置输入,输出缓冲区皆为4,096字节getcommstate(hcom, lpdcb); //获取串行口当前默认设置

lpdcb.baudrate:=9600; //波特率

lpdcb.StopBits:=2;

lpdcb.ByteSize:=7;

lpdcb.Parity:=EvenParity; //偶校验

Setcommstate(hcom, lpdcb);

setcommMask(hcom, ev_rxchar);

//指定串行口事件为接收到字符;

end;

Procedure Tcomctlfrm.MsgcommProcess(Var Message:Tmessage); 0

//用户窗口消息处理过程

Begin

Clear:=Clearcommerror(hcom, lpErrors, @Coms); //清通信口状态

if Clear Then Begin

cbNum:=Coms.cbInQue;

ReadFile(hCom, Read_Buffer, cbNum, ReadNumber, lpol);

//读取接收数据

if readnumber<>0 then

...... //接收成功

SetEvent(Post_Event); //同步事件置位

end;

end;

Procedure Tcomctlfrm.FormCreate(Sender: TObject);

begin

comminitialize; //调串口初始化过程

post_event:=CreateEvent(nil, true, true, nil); //创建同步事件; Tcomm.Create (False); //创建串行口监视线程;

end;

delphi习题

1.BinBtn组件的kind 属性预定义了一些常用的位图按钮种类。 2。在Delphi的Dialog标签中提供了多个专用对话框,其中包括opendialog,savedialog,fontdialog。 3.关闭文件需要使用closefile () 函数。 4.对于条件表达式:((3 <= x)AND(x < 0))OR(x in [1..10]),当x = 3 时该表达式的值为1。 5、能够实现格式化输入的编辑框组件是MaksEdit 6、Table 控件操作时,方法(B )满足表尾添加记录 A.Insert B.Append C.Delete D.Post 7、能够实现多行文本编辑的两个组件是Memo 、RichEdit 。 8、只清除下拉列表中的所有选项,不清除编辑框的文本的方法是ComboBox1.Items.Clear; 9、MessageBox函数与MessageDlg函数的相同之处在于可以显示多个按钮也可以指定显示不同的图形符号 1. 如果要在中删除某个组件,单击此组件使之处于选中状态,然后在键盘上按DELETE 键就可以将该组件删除。 2. Delphi7编程使用的是Pascal 语言。 3. 复合语句是将多个语句用and 和or 两个保留字括起来。 4. Object Pascal提供了两种类型的选择结构语句,即if 语句和case 语句。 5.将窗体中的某个Button设置为默认按钮,应该设置属性default值设置为true 。6.说出你知道的一些有序类型INTEGER(整数型),STRING(字符型,按字母顺序排 列),enumerated(枚举型),subrange(子界型) 7.Delphi程序与数据库之间进行数据交换一般要由多个数据库组件协作完成。如果用户要查询数据库中的一条信息,该指令通过用户界面组件发出,经数据源组件到达数据集组件。数据集组件利用—数据库连接—组件与数据库建立连接,并读取数据库中的数据,而后又经过数据源组件将数据送到用户界面组件中显示。 四. 问答题(共3道) 1. 在Delphi中,对话框与子窗口有什么不同? 答:delphi中对话框实现的是WinAPI函数的封装,程序编译运行时,源代码中占用资源很小,子窗体相对大一些,此外,子窗体是一个类,可以很方便的进行继承和重载。 2. 使用私有域和方法的目的是什么? 答:不允许派生类和实例访问,实现更好地封装和保护自己的类,清楚地向用户表明,他们无需关心这些与他们无关的项。 3 请叙述进程与线程的区别和联系? 答:在支持线程的操作系统中,进程是分配资源的最小单位,线程是独立运行的最小单位。每个进程至少有一个线程,我们称之为主线程。一个进程可以创建、拥有多个线程。 4 请说出ADOQuery. ExecSQL与ADOQuery.open的区别? 答:ExecSQL 用于执行没有返回数据机的SQL语句,如删除指定的记录,插入记录数据,修改记录数据等操作 OPEN 用来打开数据集,其作用与将active属性设置为true相同 当adoquery执行的是select操作时,使用OPEN 用来打开数据集;当adoquery执行的是没有返回数据集的SQL语句(insert ,delete,update,create table等)时,使用ExecSQL执行。

DELPHI期末考试试题

《Delphi程序设计》试卷 学号:姓名:专业:班级: 题号一二三四五总分登分人 题分3010103020100 得分 一、单项选择题(每小题1分,共30分) 得分评卷人 1.一个Delphi应用程序必有一个文件和至少一个单元文件。 A.程序 B.工程 C.数据 D.图形 2.在窗体中完成多个控件整齐排列,应使用何种操作? A.Align B.Bring to front C.Scale D.Send to back 3.form(窗体)的OnCreate事件在何时触发?. A.窗体关闭 B.窗体建立 C.窗体隐藏 D.窗体活动 4.下列哪种属性可以设置窗体无最大化、最小化和关闭图标? A.bordericons B.formstyle C.visible D.enabled 5.下列哪个属性决定控件的可见和不可见? A.Color B.Formstyle C.Visible D.Enabled 6.所有可视化的VCL控件都是从哪一个基类派生而来的? A.Tcontrol B.TwidgetControl C.TwinControl D.TwindowControl 7.Delphi中,是特殊的单元文件,可理解为主单元文件,或者说 主程序,而其它的单元文件可以看作是被其所调用的子程序。 A.窗体文件 B.项目文件 C.资源文件 D.配置文件 8.下列哪个属性是控制窗体标题的属性? A.Formstyle B.Caption C.Font D.Enabled 9.下列哪种类型的常量不能用来定义子界类型? A.实型数据(Real)B.用户定义的任何顺序类型C.字符型(Char)D.整型(Integer) 10.下列变量命名正确的是。 A.7ABC B.Program7 C.page@21 D.program 11.如果要检查edit编辑框中输入的字符,可以在哪个事件处理程序中编写代码 检查。 A.OnClick B.OnEnter C.OnMouseUp D.OnKeyPress 12.以下哪个函数是输入对话框函数?。 A.inputbox B.messagebox C.messagedlg D.showmessage 13.下列对象不能响应Click事件的是。 A.列表框B.图片框C.窗体D.计时器14.已知对话框函数MessageDlgPos(ConstMsg:String;DlgType:TmsgDlg Type;Buttons:TmsgDlgButtons;HelpCtx:longint;X,Y:Integer):Word.问:

Delphi程序设计试题及解答(wan)

《Delphi 程序设计》试题及解答 卷6 一、填空题(20分,每空2分) 1、现实世界中对象具有自己的状态和行为。对应着,面向对象技术中的对象可以具有自己的属性和 方法 。 2、结构化程序设计要求程序中仅采用顺序、分支和循环三种控制结构,其中每种结构只能有 一个入口 和一个出口。 3、Delphi 应用程序中单元文件的扩展名是 .pas 。 4、与数学表达式 53)(cos 2++x b a 对应的Object Pascal 表达式是 。 5、对于下面的条件表达式: ((3 <= x )AND (x < 0)) OR (x in [1..10]) 当x = 3 时, 该表达式的值为 。 6、ListBox 对象列表框中的内容是通过 属性来进行设置的。 7、如果想设计DBGrid 对象的列标题和对齐方式,可以对DBGrid 对象的 属性进行设置。 8、时钟组件(Timer )能有规律的以一定时间间隔触发 事件 9、能够实现格式化输入的编辑框组件是 10、利用 对象的LineTo 等方法,可以绘制基本图形。 二、单项选择题(20分,每题2分) 1、Delphi 程序设计的基本特点是( )。 A . 可视化程序设计 B . 代码程序设计 C . 事件驱动编程 D . A 和C 2、进度显示组件ProgressBar 的当前进度可以通过( )属性设置。 A . Step B .Scroll C . Position D .Max 3、下列变量命名正确的是( )。 A .7ABC B . My7 C . page@2 D .cmd..1 4、“x 是小于200的非负数”的Object Pascal 表达式是( )。 A .0 ≤ x < 200 B . x >= 0, x<200 C .(x >=0) AN D (x < 200) D . (x >= 0 ) OR (x<200) 5、在窗体上建立多页面的用户界面,需要首先建立的对象是( ) A . TabControl B .PageControl C . HeaderControl D .PageScroller 6、能够删除edit1中内容的语句是( )。 A . edit1.Clear ; B .edit1. Focused ; C . edit1.Text= null ; D .edit1.text :='\0' ; 7、现建立一个简单报表,仅包含数据列标题栏、数据栏和汇总栏,则在Bands 属性的子属

delphi面试题及答案

delphi面试题及答案 【篇一:delphi程序期末试题答案】 一、单选题(每小题2分,共30分) 1.在 radiogroup 组件中有 4 个单选框,当选中第 2 个单选框时,radiogroup 组件中的 itemindex 属性值应为(b)。 a.0 b.1c.2d.3 2.函数和过程的区别为(a)。 a.函数执行后返回一个值,而过程不需返回值b.过程执行后返回一个值,而函数不需返回值c.过程在被调用时,能执行某种特殊功能并能返回到调用它的地方d.函数在被调用时,能执行某种特殊功能并能返回到调用它的地方3.32 and 27 的值是(b)。 a.59b.0c.27d.32 4.窗体与数据模块的扩展名是(b)。 a..dcu b..dfm c..pas d..dpr 5.delphi 中用什么函数来析构一个组件(c)。 a.constructor b.destroy c.free d.create 6.一个指针变量ptr 的域成员 fs 访问的方法是(c)。 a.ptr-fs b.ptr.fsc.ptr^fs d.ptr@fs 7.type aarrays=[1?8,1?5] of integer ,该类型定义了多少个下标元素(d)。 a.45 b.54 c.48 d.40 8.delphi 的所有类都是从什么类继承下来的(b)。 a.tcomponent b.tobject c.tstream d.tnull 9.定义构造函数时用到的保留字是(c)。 a.class b..implementation c.create d.construction 10.下列组件中属于可视组件的是哪一个(d)。 a.tdatasource b.topendialog c.ttable d.tscrollbar 11.设有过程 procedure pro(var x,y:integer); 变量 a , b 为整型 变量,其值分别为 5、6,则合法的过程调用语句是(a.pro(5,6) b.pro(5,b) c.pro(a,6)d.pro(a,b) 12.下列组件中不能获取焦点的是(b)。 a.tedit b.tlabelc. trichedit d.ttreeview13.定义抽象类必 须使用的指令字是(a)。 a.abstractb.virtualc.dynamicd.override” 14.delphi是哪个公司的产品(c)。 a. microsoft b.ibm c.borland d.dom

delphi考试试题

1、简述面向对象技术中“类”与“对象”的概念。结合Delphi中使用的组件,举例说明什么是类、什么是对象。 类是对象的抽象及描述,它是具有统一属性和方法的一类对象的统一描述体,是用来定义某类对象共有属性和方法的模板。而对象是类的实例。 在Delphi环境中,组件板上的组件就是类的概念,例如按钮组件就是按钮类。而用户在窗体上创建的一个按钮就是对象的概念(按钮对象)。用户可以在窗体上用按钮类创建若干个按钮对象,它们都是按钮类的实例。 2、在Delphi中,什么是对象的属性、方法和事件? 一个对象是由属性、方法和事件所组成。属性表示对象中的数据,方法是对象能够执行的动作,事件是能够引起对象反应的条件。 3、简述利用Delphi开发一个项目的基本步骤。 ●建立一个新的项目 ●建立窗体 ●在窗体上加入对象 ●检查和设定对象属性 ●编写对象的事件处理程序 ●编译、试运行,并进行代码调试 保存项目文件,退出Delphi 环境 4、在一个单元中,全局变量和局部变量的含义是什么?说明在单元文件中如何定义这两种变量(可举例说明)。 局部变量只能在定义它的程序块中使用,且其生命周期也只存在于从程序块开始执行到程序块执行结束。在一个事件处理程序中的变量说明部分,能够定义一个局部变量,供该事件处理程序内部使用。 而全局变量可以在单元中的各程序块中使用(共享),且生命周期存在于整个单元代码的活动期中。 在Implementation保留字后(但不要在程序块里)定义的变量就是全局变量。 选择题1、下列哪些条目可作为Delphi的变量名,哪些不行,并说明原因。 abc 123 abc123 123abc file a! 合法的变量名是:abc abc123 选择题7、如果想查看showmessage过程的帮助信息,请你说出两种获取帮助信息的方式。 ①通过主菜单Help的Delphi Help命令调出帮助主页面,在“索引”页输入框中输入要查找的showmessage单词,即可找出相关的帮助信息。 ②在代码中如果调用了showmessage过程,可将光标置于该单词中,然后按F1键,即可找出该过程的帮助信息。 选择题2、一个项目由一组文件组成。其中一些主要文件的后缀有: .dpr .pas .dfm .dcu .~dpr .~pas .~dfm 等 请说出这些文件的中文名称及用途。 答:.dpr 项目文件,存放项目的主程序 .pas 单元文件,存放源代码,如事件处理程序等。 .dfm 窗体文件,数据文件,记录窗体上的数据信息(如组件位置等) .dcu 目标文件,保存.pas编译后得到的结果。

Delphi面试题

Delphi面试题 第一部分Delphi知识1. 如果一个元件希望放到IDE的元件面板上,它必须从________类派生,如果一个元件能作为其它元件的容器,它必须从_____________类派生,如果一个元件在运行时可见,它必须从___________________类派生(A)TGraphicControl (B)TWinContr 1.您为什么选择软件开发这个行业?(30字左右简写); 2.如果有您解决不了的软件问题您会采取什么样的解决措施; 3.a.请您写出Object Pascal所支持的数据类型;b.请您写出Shl、Shr、Xor、Not 的数学表示法; 4.请您写出VCL结构层次(以TObject开始,最少五层);5 二.是非题(共20道)1.从主菜单上选择Project|Syntax Check 菜单选项,Delphi将编译从上次编译后有改动的任何单元,并报出遇到的错误。()2.Delphi的VCL对象有些是指针,从堆栈中分配空间,有些则不是。()3.粘贴时,如果作为容器的组件已被选择,剪贴 1、rtl70.bpl是什么?有什么用? 2、delphi的Package相对dll有什么优点? 3、以下的记录(结构)变量在内存占多少字节?type a = packed record v1: Byte; v2: Word; v3: string[16]; v4: Double; v5: string; v6: TForm; end; 4、以下的写法是否正确?

type a 一.选择题(共40道)1.用户开发程序时需要经常在窗体和编辑器窗口之间来回切换,可使用快捷键()。A、F12和F11 B、F12和F13 C、F12和Ctrl+F12 D、F12和Alt+F12 E、F12和Shift+F12 2.某函数如下:Function check(n,k:Integer):Integer; Var m:Integer; Beg 一、Delphi基础1、Delphi 内置类型string 和WideString 的区别。2、简要描述Delphi代码单元中,以下关键字的作用。interface:implementation:initialization:finalization:3、将一周七天声明成枚举类型。4、现有Integer 变量A、B,在不声明其

delphi程序试题答案

一、单选题 1.在RadioGroup 组件中有 4 个单选框,当选中第 2 个单选框时,RadioGroup 组件中的ItemIndex 属性值应为( B )。 A.0 B.1 C.2 D.3 2.函数和过程的区别为( A )。 A.函数执行后返回一个值,而过程不需返回值 B.过程执行后返回一个值,而函数不需返回值 C.过程在被调用时,能执行某种特殊功能并能返回到调用它的地方 D.函数在被调用时,能执行某种特殊功能并能返回到调用它的地方 3.32 AND 27 的值是( B )。 A.59 B.0 C.27 D.32 4.窗体与数据模块的扩展名是( B )。 A..dcu B..dfm C..pas D..dpr 5.Delphi 中用什么函数来析构一个组件( C )。 A.Constructor B.Destroy C.Free D.Create 6.一个指针变量ptr 的域成员fs 访问的方法是( C )。 A.ptr->fs B.ptr.fs C.ptr^fs D.ptr@fs 7.Type aarrays=[1…8,1…5] of integer ,该类型定义了多少个下标元素( D )。 A.45 B.54 C.48 D.40 8.Delphi 的所有类都是从什么类继承下来的( B )。 A.Tcomponent B.Tobject C.Tstream D.Tnull 9.定义构造函数时用到的保留字是( C )。 A.Class B..implementation C.create D.construction 10.下列组件中属于可视组件的是哪一个( D )。 A.Tdatasource B.Topendialog C.Ttable D.Tscrollbar 11.设有过程procedure pro(V AR x,y:integer); 变量a , b 为整型变量,其值分别为5、6,则合法的过程调用语句是( D )。 A.Pro(5,6) B.pro(5,b) C.pro(a,6) D.pro(a,b) 12.下列组件中不能获取焦点的是( B )。 A.Tedit B.Tlabel C.Trichedit D.Ttreeview 13.定义抽象类必须使用的指令字是( A )。 A.Abstract B.virtual C.dynamic D.override” 14.Delphi是哪个公司的产品( C )。 A.Microsoft B.IBM C.Borland D.DOM 15.窗体上放置有一个TEdit类控件Edit1,当在Edit1中按下‘A’键时触发的事件和事件顺序是( A )。 A.OnKeyDown->OnKeyPress->OnKeyUp B.OnKeyDown->OnKeyUp C.OnKeyPress D.OnKeyDown->OnKeyUp->OnKeyPress 二、判断题 1.Pascal 语言中可以把一个实数赋值给一个整型变量,系统会自动取整。(错) 2.所有类都有Name属性。(错) 3.variant类型的变量被动态赋值为一个特定的数据类型后,不能再赋值为一个其它的数据类型。(错) 4.函数MessageDlgPos与MessageDlg极为相似,只是MessageDlgPos函数能够控制信息对话框的出现位置。(对)5.BitBtn控件可以用来制作一个带图片的按钮,而SpeedButton则不能。(错) 6.MediaPlayer控件的AutoEnable属性是用来控制该控件是否可用。(错) 7.图形组件没有输入焦点,不能接受用户的输入,它只具有向用户显示的功能。(对) 8.Timer组件常称为“定时器”,它每隔固定的时间间隔可以触发一个OnTimer事件。(对) 9.Tobject是delphi的基类,系统中的每一个类都是Tobject的子类。(对) 10.在MDI应用程序窗口中,如果将一个窗体设为父穷窗体,要将它的FormStyle属性设为FsStayOnTop。(错)

Delphi程序设计复习题

《Delphi程序设计》复习题 一、单项选择题 1、下面哪句话对Delphi的描述是正确的()。 A.只能用于数据库客户端开发的工具B.Delphi的编程语言全部是面向过程的C.Delphi的编程语言是Java D.面向对象的可视化的开发环境 2、在Delphi中,建立一个文本编辑区域,可采用下列()。 A、命令按钮 B、文本标签控件 C、Edit控件 D、Timer控件 3、表达式60 +19 div 2 的值是() A.67 B.79 C.69 D.80 4、一个Delphi应用程序必有一个()文件和至少一个单元文件。 A) 执行程序B) 项目C) 数据D)图形 5、最适合于在工具栏上放置的工具按钮是() A.Button B.RadioButton C.SpeedButton D.BitBtm 6、Delphi应用程序设计基于()语言。 A) Basic B) C++ C) Pascal D) Object Pascal 7、下列表达式中()不是布尔表达式。 A) A=3 B) A div B C) A and B D) A>B 8、“x 是小于100的非负数”的Object Pascal表达式是()。 A.0 ≤x < 100 B.x >= 0, x<100 C.(x >=0) AND (x < 100) D.(x >= 0 ) OR (x<100) 9、利用Image对象的哪个属性设置,可以使加载的图像自动放大或缩小,以适应Image的显示区域() A.Stretch B.AutoSize C.Align D.Center 10、工具栏上的一个SpeedButton按钮如果要设置为状态按钮,则正确设置的方法是() A.将SpeedButton按钮的GroupIndex属性设置为0,且AllowAllUp属性设置为True。 B.将SpeedButton按钮的GroupIndex属性设置为0,且AllowAllUp属性设置为False。 C.将SpeedButton按钮的GroupIndex属性设置为非0值,且AllowAllUp属性设置为True。 D.将SpeedButton按钮的GroupIndex属性设置为非0值,且AllowAllUp属性设置为False。 11、要改变一个对象的高度,应使用属性()。 A、Font B、ForcColor C、Name D、Height 12、表达式30 +19 div 2 的值是() A.37 B.49 C.39 D.40 13、下列合法的变量名是()。 A、na + e B、e- 3r C、r_3 D、5we

《Delphi程序设计》测试试题及解答卷

《Delphi程序设计》试题及解答卷

————————————————————————————————作者:————————————————————————————————日期:

《Delphi 程序设计》试题及解答 卷5 一、填空题(20分,每空2分) 1、现实世界中对象具有自己的状态和行为。对应着,面向对象技术中的对象可以具有自己的属性和 方法 。 2、Delphi 应用程序中项目文件的扩展名是 .dpr 。 3、结构化程序设计要求程序中仅采用顺序、分支和循环三种控制结构,其中每种结构只能有 一个人口 和一个出口。 4、在Delphi 集成开发环境中,如果想要直接设置或者修改对象的属性,可以通过对象查看器(Object Inspector )中的 属性 或 Properties 窗口直接进行设置。 5、ListBox 对象列表框中的内容是通过 items 属性来进行设置的。 6、时钟组件(Timer)能有规律的以一定时间间隔触发 ontimer 事件。 7、如果让界面上的一个按钮变为不可用,需要将它的 enabled 属性设为False 。 8、Image 组件可通过设置其 Autosize 属性为True 使Image 组件根据图像的大小自动调整显示窗口大小。 9、Delphi 的一个项目由若干文件组成,其中文件名后缀含有“~”的文件为 备份文件 。 10、与数学表达式 53)(cos 2++x b a 对应的Object Pascal 表达式是 Cos*cos*(a+b) /(3*x) 二、单项选择题(30分,每题3分) 1、Delphi 程序设计的基本特点是(D ) A . 可视化程序设计 B . 代码程序设计 C . 事件驱动编程 D . A 和C 2、修改窗体的标题时,应当设置form 的属性是( A ) A .Caption B . Name C . Text D . Label 3、下列哪个常量说明语句是正确的( D ) A. const x := (c < 16); B. const x : 16 ; C. const x := 16 ; D const x = 16 ; 4、“x 是小于100的非负数”的Object Pascal 表达式是( C ) A .0 ≤ x < 100 B . x >= 0, x<100 C .(x >=0) AN D (x < 100) D . (x >= 0 ) OR (x<100) 5、编辑框(Edit )中的文本发生改变时引发的事件是( B ) A .AutoSize B .OnChange C .SetFocus D .SetText 6、表达式 30 + 19 div 2 的值是( C ) A . 37 B . 49 C . 39 D . 40 7、现建立一个简单报表,仅包含报表标题栏、数据栏和汇总栏,则在Bands 属性的子属性

delphi期末考试题

一、填空题(20分,每题2分) 1、一个对象是由三部分组成,分别为:方法、属性和事件所组成。 2、当程序运行时,如果要求窗体中的某个按钮不再显示,可以将该按钮的Visible 属性 设置为false即可。 3、Delphi应用程序中项目文件的扩展名是.dpr 4、Delphi是基于面向对象技术的,在delphi中,属性表示对象中的数据,方法是 对象能够执行的动作,事件是能够引起对象反应的条件。 5、写出下列表达式的值: Trunc(—1.3)+int(1.4)= 0 Sqr(3)+strtoint(19)= 28 3-2<>Int(1.1)= FALSE 6、在delphi集成开发环境中,如果想要直接设置或者修改对象的属性,可以通过对象观察器中的属性窗口直接进行设置。 7、复选框对象是否被选中,是由其checked 属性决定的。 8、delphi中程序与数据库之间进行数据交换一般由多个数据库组件协作完成,如果用户要查询数据库的一条信息,该指令通过界面组件发出,经数据源组件到达数据库组件。数据库组件利用自身的读写功能,通过数据库连接组件从数据库中取得数据,再经数据源组件送到用户界面组件中显示。 9、delphi中设计应用程序的菜单时,有主菜单和弹出菜单两种菜单,它们各自“standard”页上的一个组件创建,主菜单由MainMenu 组件创建,而弹出菜单用PopupMenu 组件创建窗体中的多页面设计要用到PageControl组件。 10、计时器控件能有规律的以一定时间间隔触发Ontimer 事件,并执行该事件过程中的程序代码。 二、单项选择题(20分,每题2分) 1、delphi程序设计的基本特点是(D) A.可视化程序设计 B.代码程序设计 C.事件驱动编程 D.A和C 2、下列哪个常量说明语句是正确的(D) A.const x := (c<16); B. const x : 16; C.const x :=16; D. const x = 16; 3、编辑框中的文本发生改变时被触发的事件是(B) A.AutoSize B. OnChange C.SetFocus D. SetFocus 4、下列说法正确的是(B) A.组件必须是可视的,这样用户才能看见。B. 控件都是可视的。 C.一个组件肯定是控件 D. 按钮(Button)是组件,而窗体(Form)则不是组件。 5、下面对Memo组件Memol操作正确的语句是(D) A.Memol.Clear””; B. Memol.Lines:=’Test’; C.Memol.Lines.Add(123456); D. Memol.Lines.Delete(1); 6、设有语句 X:=TnputBox(‘输入数值’,‘0’,‘示例’) 程序运行后,如果从键盘上输入数值10并按回车键,则下列叙述中正确的是:( D ) A.变量x的值是数值10 B. 在InputBox对话标题栏中显示的是“示例”

Delphi程序设计试题

《Delphi 程序设计》试题及解答 一、填空题(20分,每空2分) 1、结构化程序设计要求程序中仅采用顺序、分支和循环三种控制结构,其中每种结构只能有一个入口和一个出口。 2、现实世界中对象具有自己的状态和行为。与此相对应,面向对象技术中的对象可以具有自己的属性和方法。 3、Delphi 的一个项目由若干文件组成,其中与窗体文件对应的文件是单元文件。 4、在设计阶段,ListBox 对象列表框中的内容是通过 Items 属性来进行设置的。 5、调用主窗体的Close 方法,可以结束程序。 6、如果要在窗体上设计一个主菜单,首先要建立MainMenu 对象。 7、当Query 对象中存储一条Delete 语句时,执行该语句需要调用Query 的ExecSQL 方法。 8、与数学表达式 53)(cos 2++x b a 对应的Object Pascal 表达式是 sqr(cos(a+b)) /(3*x)+5 或 cos(a+b) * cos(a+b) /(3*x)+5 9、通过Animate 对象的CommonA VI 属性设置,可以指定系统标准的A VI 动画演示。 10、利用Canvas 对象的LineTo 等方法,可以绘制基本图形。 二、单项选择题(20分,每题2分) 1、下面哪句话比较准确地定义了Delphi ( A )。 A .面向对象的可视化的开发环境 B .多媒体制作工具 C .数据库的客户端开发工具 D .高级编程语言 2、下面哪个功能键可以调出Delphi 的联机帮助信息(A ) A .F1键 B .F2键 C .F3键 D .F4键 3、“x 是小于10的非负数”的Object Pascal 表达式是( B ) A .0 ≤ x < 10 B . (x >=0) AND (x < 10) C .x >= 0, x<10 D . (x >= 0 ) OR (x<10) 4、工具栏上的一组按钮如果要构成互斥关系(如“左对齐”、“居中”、“右对齐”),它们的GroupIndex 属性正确的设置是( C ) A .GroupIndex 属性值都为0 B .GroupIndex 属性值非0,且互不相同 C .GroupIndex 属性值非0,且相同 D .GroupIndex 属性值互不相同 5、利用Image 对象的哪个属性设置,可以使Image 对象的显示区域随着调入图像的大小自动调整以显示全图( B ) A .Stretch B .AutoSize C .Align D .Center 6、现建立一个简单报表,仅包含报表标题栏、数据列标题栏和数据栏,则在Bands 属性的子属性中,不需要选择的是( D ) A .HasColumnHeader B .Detail

delphi复习题

复习题 1、在文件操作中Eof的意思是。 2、在Delphi的BDE数据集中通过控件来实现对SQL语言的支持。 3、要想使窗体中的某个控件获得焦点,则需调用方法。 4、MaskEdit是格式文本输入对象,属性为它提供了过滤文本的格式。 5、由于TDBGrid控件和TDBNavigator控件是自动地访问数据集控件中所有可以访问的字段控件的,因此它们没有属性。 6、函数format(‘本场%已进了1个球!’,[‘李铁’])返回的字符串为。 7、TEdit控件的MaxLength属性是设置。 8、想在Button按钮上设置快捷方式,需要在Caption属性中应用符号。 9、通过数据库字段对象(例如:Ttalbe部件的字段对象)的属性可以读取字段值,并且将它转换成字符串类型。 10、Delphi为用户提供一种Append方法,用来。 11、常量是一种内容不能改变的标识符,常量声明采用保留字。 12、Delphi的计时器的Interval属性设置为1000,即是每隔秒会被触发一次。 1、以下正确的枚举类型的定义是()。 (A)type vowel=(‘a’,’e’,’i’,’t’,’u’) (B)type num=(1..3, 8..10) (C)type color=(red, blue, black) (D)type realtype=(1.5, 2.5, 3.5, 4.5) 2、已知如下子界类型定义及变量声明: Type ntype= -10 .. 10; Var m: ntype; n: integer; 问下列语句哪一个可能产生错误:()。 (A)n := m; (B)m :=n; (C)n := abs(m); (D)n := n+m; 3、下列哪些符号哪一个是Delphi6中的合法变量名()。 (A)AB5 (B)0AB (C)Then (D)A[B]8 4、下面哪个是delphi工程文件的扩展名()。 (A).pas (B).dpr (C).cfg (D).dfm 5、Memo控件的Align属性用于调整该对象在窗口中的对齐方式,当需要该控件顶部对齐时,其值可以设置为()。 (A)alTop (B)alClient (C)alBotton (D)alright

完整的delphi程序设计教程课后习题答案

1.239页1题小时钟 procedure TForm1.Timer1Timer(Sender: TObject); var xt,yt:integer; h,m,s,ms:word; begin decodetime(time,h,m,s,ms); xt:=paintbox1.clientwidth div 2; yt:=paintbox1.clientheight div 2; paintbox1.refresh; paintbox1.canvas.moveto(xt,yt); paintbox1.canvas.pen.width:=3; paintbox1.canvas.lineto(xt+round(s in((60*h+m)/(12*60)*2*pi)*100), yt-round(cos((60*h+m)/(12*60)*2 *pi)*100)); paintbox1.canvas.moveto(xt,yt); paintbox1.canvas.pen.width:=2; paintbox1.canvas.lineto(xt+round(s in(m/60*2*pi)*140), yt-round(cos(m/60*2*pi)*140)); paintbox1.canvas.moveto(xt,yt); paintbox1.canvas.pen.width:=1; paintbox1.canvas.lineto(xt+round(s in(s/60*2*pi)*180), yt-round(cos(s/60*2*pi)*180)); end; end. 2.239页3题求两点间的距离procedure TForm1.Button1Click(Sender: TObject); begin paintbox1.Refresh; formpaint(sender); end; procedure TForm1.FormPaint(Sender: TObject); var xt,yt:integer; ax,ay,bx,by:integer; begin xt:=paintbox1.ClientWidth div 2; yt:=paintbox1.Clientheight div 2; paintbox1.canvas.MoveTo(xt,0); paintbox1.canvas.lineTo(xt,2*yt); paintbox1.canvas.MoveTo(0,yt); paintbox1.canvas.lineTo(2*xt,yt); ax:=strtoint(edit1.text); ay:=strtoint(edit2.text); bx:=strtoint(edit3.text); by:=strtoint(edit4.text); edit5.Text:=floattostr(sqrt((ax-bx)* (ax-bx)+(ay-by)*(ay-by))); paintbox1.canvas.MoveTo(xt+ax*1 0,yt-ay*10); paintbox1.canvas.lineTo(xt+bx*10, yt-by*10); end; end. 3.226页5题输入学生成绩 var Form1: TForm1; type studentrecord=record xh,xm:string[6]; xb:boolean; yy,sx,dz:integer; end; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var t:studentrecord; f,f1:file of studentrecord; p1,p2:boolean; begin assignfile(f,'c:\my documents\stu.dat'); reset(f); assignfile(f1,'c:\my documents\stu1.dat'); rewrite(f1); while not eof(f) do begin read(f,t); p1:=(t.sx>=85)and(t.yy>=85)and(t. dz>=85); p2:=t.sx+t.yy+t.dz>=270; if p1 or p2 then write(f1,t); end; closefile(f); closefile(f1); end; procedure TForm1.FormCreate(Sender: TObject); var t:studentrecord; f:file of studentrecord; xingbie:string; begin assignfile(f,'c:\my documents\stu.dat'); reset(f); while not eof(f) do begin read(f,t); if t.xb then xingbie:='男' else xingbie:='女'; listbox1.Items.Add(t.xh+' '+t.xm+' '+xingbie+' '+inttostr(t.sx)+ ' '+inttostr(t.yy)+' '+inttostr(t.dz)); end; closefile(f); end; procedure TForm1.Button2Click(Sender: TObject); begin close; end; end. 4.226页8题保存获得奖学金者 var Form1: TForm1; type studentrecord=record xh,xm:string[6]; xb:boolean; yy,sx,dz:integer; end; implementation {$R *.dfm} procedure

《Delphi程序设计》试题及解答卷5

《Delphi 程序设计》试题及解答 卷5 一、填空题(20分,每空2分) 1、现实世界中对象具有自己的状态和行为。对应着,面向对象技术中的对象可以具有自己的属性和 方法 。 2、Delphi 应用程序中项目文件的扩展名是 .dpr 。 3、结构化程序设计要求程序中仅采用顺序、分支和循环三种控制结构,其中每种结构只能有 一个人口 和一个出口。 4、在Delphi 集成开发环境中,如果想要直接设置或者修改对象的属性,可以通过对象查看器(Object Inspector )中的 属性 或 Properties 窗口直接进行设置。 5、ListBox 对象列表框中的内容是通过 items 属性来进行设置的。 6、时钟组件(Timer)能有规律的以一定时间间隔触发 ontimer 事件。 7、如果让界面上的一个按钮变为不可用,需要将它的 enabled 属性设为False 。 8、Image 组件可通过设置其 Autosize 属性为True 使Image 组件根据图像的大小自动调整显示窗口大小。 9、Delphi 的一个项目由若干文件组成,其中文件名后缀含有“~”的文件为 备份文件 。 10、与数学表达式 53)(cos 2++x b a 对应的Object Pascal 表达式是 Cos*cos*(a+b) /(3*x) 二、单项选择题(30分,每题3分) 1、Delphi 程序设计的基本特点是(D ) A . 可视化程序设计 B . 代码程序设计 C . 事件驱动编程 D . A 和C 2、修改窗体的标题时,应当设置form 的属性是( A ) A .Caption B . Name C . Text D . Label 3、下列哪个常量说明语句是正确的( D ) A. const x := (c < 16); B. const x : 16 ; C. const x := 16 ; D const x = 16 ; 4、“x 是小于100的非负数”的Object Pascal 表达式是( C ) A .0 ≤ x < 100 B . x >= 0, x<100 C .(x >=0) AN D (x < 100) D . (x >= 0 ) OR (x<100) 5、编辑框(Edit )中的文本发生改变时引发的事件是( B ) A .AutoSize B .OnChange C .SetFocus D .SetText 6、表达式 30 + 19 div 2 的值是( C ) A . 37 B . 49 C . 39 D . 40 7、现建立一个简单报表,仅包含报表标题栏、数据栏和汇总栏,则在Bands 属性的子属性

Delphi程序设计试题及答案

一、填空题(20分,每空2分) 1、结构化程序设计要求程序中仅采用顺序、分支和循环三种控制结构,其中每种结构只能有一个入口和。 2、现实世界中对象具有自己的状态和行为。与此相对应,面向对象技术中的对象可以具有自己的和方法。 3、Delphi的一个项目由若干文件组成,其中与窗体文件对应的文件是。 4、在设计阶段,ListBox对象列表框中的内容是通过属性来进行设置的。 5、调用主窗体的方法,可以结束程序。 6、如果要在窗体上设计一个主菜单,首先要建立对象。 7、当Query对象中存储一条Delete语句时,执行该语句需要调用Query的方法。 8、与数学表达式对应的Object Pascal表达式是 9、通过Animate对象的属性设置,可以指定系统标准的A VI动画演示。 10、利用对象的LineTo等方法,可以绘制基本图形。 二、单项选择题(20分,每题2分) 1、下面哪句话比较准确地定义了Delphi ()。 A.面向对象的可视化的开发环境B.多媒体制作工具 C.数据库的客户端开发工具D.高级编程语言 2、下面哪个功能键可以调出Delphi 的联机帮助信息() A.F1键B.F2键 C.F3键D.F4键 3、“x 是小于10的非负数”的Object Pascal表达式是() A.0 ≤x < 10 B.(x >=0) AND (x < 10) C.x >= 0, x<10 D.(x >= 0 ) OR (x<10) 4、工具栏上的一组按钮如果要构成互斥关系(如“左对齐”、“居中”、“右对齐”),它们的GroupIndex属性正确的设置是()

A.GroupIndex属性值都为0 B.GroupIndex属性值非0,且互不相同 C.GroupIndex属性值非0,且相同D.GroupIndex属性值互不相同 5、利用Image对象的哪个属性设置,可以使Image对象的显示区域随着调入图像的大小自动调整以显示全图() A.Stretch B.AutoSize C.Align D.Center 6、现建立一个简单报表,仅包含报表标题栏、数据列标题栏和数据栏,则在Bands属性的子属性中,不需要选择的是() A.HasColumnHeader B.Detail C.Title D.Summary 7、在窗体上建立多页面,需要首先建立的对象是() A.TabControl B.PageControl C.HeaderControl D.PageScroller 8、既可以通过选择输入、又可以直接输入的数据感知控件是() A.DBRadioGroup B.DBListBox C.DBComboBox D.DBCheckBox 9、如果要求每当光标进入edit编辑框中时,编辑框都清空,可以在哪个事件处理程序中编写代码实现() A.OnClick B.OnMouseMove C.OnKeyPress D.OnEnter 10、下面哪个组件不是容器组件() A.Form B.Panel C.GroupBox D.Memo

相关主题
文本预览
相关文档 最新文档