Delphi 연구 개발 필기시험 시험지 나의 소해
4642 단어 Delphi
Delphi
1.
IDE , ___TComponent____ ,
, _____TWinControl______ ,
, ________TGraphicControl_______
(A)TGraphicControl (B)TWinControl (C)TComponent (D)TPersistent (E)TControl
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
1) “ ”,
A、Application.DoEvent
B、Application.DoEvents
C、Application.Idle
DD、Application.ProcessMessages
2) ?
: , 。 application process ( : cpu)
, THouse InstanceSize __32___
TPoint = packed record
X: Longint;
Y: Longint;
end;
THouse = class
private
FOwner: string; //8
FPosition: TPoint; //8
FBounds: array[0..2] of Integer; //8
FLessees: TStrings; //4
public
procedure Paint; //4
property Owner: string read FOwner; //0
end;
A、24 B、28 C、32 D、40
ListBox、ComboBox BeginUpdate EndUpdate , ?
: Item , ,
SQL 문 쓰기부서원 테이블 BaseInfo가 있다면 필드는 ID, PID, Name(이름)이고 PID는 상하 관계를 나타냅니다.
(1) 그룹 조회: PID당 기록수 ID 기록수 통계
select PID, count(ID) as 하위 인원수from BaseInfo group by PID
(2) 다음 결과를 얻을 수 있는 검색을 하세요(이름순으로)
ID 이름 하위 이름
select 1 as id, (select name from BaseInfo where id = 1) as 이름, Name as 아랫사람 이름from BaseInfo where ID in
(select ID from BaseInfo where PID = 1)order by 아랫사람 이름 desc
(3) TSQL에서 사무를 사용하려면 SQL 키워드가 필요합니까?
정답: BEGIN TRANSACTION COMMIT ROLLBACK
解释一下Windows的消息机制和经典Windows应用程序的运作流程
答:
解释Delphi中“事件”的实现原理,如果你要为控件扩展一个自定义事件,你该怎么做?
答: Button1.OnClick := Form1.Button1Click;
定义一个Private 的
FonDo: TNotifyEvent= procedure(Sender: TObject) of object;//method pointer
if Assigned(FonDo) then FonDo(Self);//第三步
为什么在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;