Delphi软件工程师试题

Delphi软件工程师试题 3.a.请您写出Object Pascal所支持的数据类型;b.请您写出Shl、Shr、Xor、Not 的数学表示法; 预定义数据类型包括整形Integer,实型Single,布尔型Boolean,字符型Char,指针型Pointer,字符串型Pchar。其中整形为2字节,长整Longint占4字节,短整Shortint占1字节,Byte相当于无符号短整,也占1字节,Word就是无符号整形,占2字节。实型Single占4字节,可包含7-8位有效小数。Double占8字节,包含15-16位有效小数。Extended站10字节,包含19-20位有效小数。Comp占8字节,包含19-20位小数部分。指针类型Pointer可以指向任何类型。其他和C++基本一致。 3.a.簡單類型(Simple) ,字符串類型(string),結構類型(Struct),指針類型(Point),函數和過程類型(Procedural) 和變體類型(Variant) 4.请您写出VCL结构层次(以TObject开始,最少五层); TObject-->TPersistent-->TCompnent-->TControl-->TWinControl(TGraphicControl)-->TCustomControl 5.请您写出一个参数是多维数组的function和调用方法;(在Delphi中写) type TArr = array[1..5,1..15] of integer; function FuncText(Arr: TArr): integer; begin result := high(Arr); end; 調用: procedure TForm1.Button3Click(Sender: TObject); var arra : Tarr; i : integer; begin i:= funcText(arra); ShowMessage(inttostr(i)); end; =========================================== 4.内存泄漏原理和处理方法内存泄漏是主内存分配了部分内存后而没有释放,逐渐耗尽内存资源,导致系统崩溃。它的后果甚至是会影响到以后内存的正常运行或使用内存损坏~~~ 它主要是指程序中间动态分配了内存,但是在程序结束时没有释放这部分内存,从而造成那一部分内存不可用的情况,重起计算机可以解决,但是也有可能再次发生内存泄露,内存泄露和硬件没有关系,它是由软件引起的。而在一般情况下无法轻易被发现的其实它也是轻易不是出现的,它就好象你坐在一个升降机里所在是13楼而你还按下13楼的按扭一样,内存泄露只会在这样的情况下出现的,不过内存泄露或者内存泄漏说还是会比一个人站在13楼还按要去13 楼的按扭这样的情况要多的多,因为有时内存泄漏会时常发生在用户使用某些较大且较复杂的程序中~~~~处理的办法也只有使用一些软件来测试内存有没有这样泄露的问题了~~~~~不过要是隐性式的内存泄漏就不太好办了~~~要根据当前发生一些问题或是一些操作来判断是否发生内存泄漏的问题. ============================================== 7、写出你常用的DELPHI第三方控件(包)名及其功能。 7. dclqrt70.bpl 快速报表控件 dclsockets70.bpl 通信控件 reportbuiler winskinD7.dpk 皮肤控件 raize ,1stclass woll2woll公司出品的界面控件 ,quickreport,FlatStyle, ============================================== bpl和dll文件的区别我认为bpls和dlls之间的主要区别就是输出函数的数量。用dll输出的唯一的东西就是用exports关键字指定的那些。而用bpl,所有单元的interfaces里定义的都输出,包括全局变量和类定义,initialization和finalization部分的地址也输出。另外,在dll和bpl的内部,确实有很大的不同。bpl输出所有供RTI识别一个文件是bpl而不是dll文件所需的所有函数。如果你调用loadpackage,我也可以调用loadlibrary把它当作普通的dll来load,然后它会调用packages中所有单元的initializatin部分并做一些其他的housekeeping?的操作。调用包里的函数时产生的汇编代码和调用dll中函数产生的汇编代码是相同的。 ============================================== 写出TEdit、TLabel、TTimer的主要继承路径,答题格式TXXX->TXXX->...... TEdit: TObject->TPersistent->TComponent-> TControl-> TWinControl->TWidgetControl->TCustomEdit->TEdit TLabel: TObject->TPersistent->TComponent-> TControl-> TWinControl->TFrameControl->TCustomLabel-> TLabel TTimer: TObject->TPersistent->TComponent->THandleComponent 第二部分 Delphi编程【编程】 给定一个文本文件(英文文章),统计其中各单词的频次。 Var Form1: TForm1; al: TIntegerList; strL: TStringList; Procedure TForm1.FormCreate(Sender: TObject); Begin al := TIntegerList.Create; strL := TStringList.Create; Memo1.Lines.LoadFromFile('d:/aaa.txt'); End; Procedure TForm1.FormClose(Sender: TObject; Var Action: TCloseAction); Begin al.Free; strL.Free; End; Var i, a: Integer; Procedure TForm1.Button1Click(Sender: TObject); Begin ListBox1.Clear; strL.Clear; al.Clear; a := 1; For i := 1 To Length(Memo1.Text) Do Begin If not (Memo1.Text In ['a'..'z', 'A'..'Z','0'..'9']) Then Begin If not (Memo1.Text[i-1] In ['a'..'z', 'A'..'Z','0'..'9']) Then Begin a := i+1; Continue; End; If strL.IndexOf(LowerCase(Copy(Memo1.Text, a, i - a))) > -1 Then Begin al.Items[strL.IndexOf(LowerCase(Copy(Memo1.Text, a, i - a)))] := al.Items[strL.IndexOf(LowerCase(Copy(Memo1.Text, a, i - a)))] + 1; a := i + 1; End Else Begin strL.Add(LowerCase(Copy(Memo1.Text, a, i - a))); al.Add(1); a := i+1 ; End; End; End; for i := 0 to strL.Count-1 do begin ListBox1.Items.Add(strL.Strings+' = '+ IntToStr(al.Items)) end; End;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值