查看文章 |
第一部分 Delphi知识 2、写出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 3、1) 为防止界面窗体“僵死”,可调用如下代码___D___ 让系统响应消息,有机会响应其它的事件了。 不让 application 的 process 把系统的资源给锁死(例如: cpu)
4、有如下类定义,请问类THouse的InstanceSize是___C____ public A、24 B、28 C、32 D、40 一次大量加入Item时,不显示界面加入过程,以提高导入速度 6、写SQL语句 select PID, count(ID) as 下属人数 from BaseInfo group by PID (2)请做一个查询,得到以下结果(按姓名排序) (3)在TSQL中使用事务需要用那些SQL关键字? BEGIN TRANSACTION COMMIT ROLLBACK 7、解释一下Windows的消息机制和经典Windows应用程序的运作流程 8、解释Delphi中“事件”的实现原理,如果你要为控件扩展一个自定义事件,你该怎么做? Button1.OnClick := Form1.Button1Click; 定义一个Private 的 FonDo: TNotifyEvent= procedure(Sender: TObject) of object;//method pointer if Assigned(FonDo) then FonDo(Self);//第三步 9、为什么在TList中Add操作要比Insert操作快? Add操作,TList只是在链表尾添加,O(1)的操作; Insert操作,要修改链表中间某位置前后记录的Link域的值 ,要从链表头开始是,是 O(n)的操作 10、某次调试中发现某树形控件响应很迟缓,经调试发现是如下语句,TreeView.Items.Clear执行缓慢,请分析可能的原因是什么? 可能要析构TreeView.Items里的所有结点指向的对象 第二部分 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[i] 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[i]+' = '+ IntToStr(al.Items[i])) end; End; |

