delphi编程从入门到精通 04(共4册)

delphi编程从入门到精通 04(共4册)

ID:15435325

大小:55.50 KB

页数:8页

时间:2018-08-03

delphi编程从入门到精通 04(共4册)_第1页
delphi编程从入门到精通 04(共4册)_第2页
delphi编程从入门到精通 04(共4册)_第3页
delphi编程从入门到精通 04(共4册)_第4页
delphi编程从入门到精通 04(共4册)_第5页
资源描述:

《delphi编程从入门到精通 04(共4册)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、附錄EDelphi4增訂的ObjectPascal附錄EDelphi4增訂的ObjectPascal本附錄在於說明Delphi4新增訂的ObjectPascal程式語言。總結來說,Delphi4的ObjectPascal增訂了以下幾大部分除最後一項屬於Win32進階篇的內容之外,以本附錄補充說明第二、三章。:o新增加數種內定資料型態。oDynamicArraysoMethodandRoutineOverloadingoDefaultParameters.oImplementatinginterfacesbydelega

2、tion,可用以下的寫法:propertyMyInterface:IMyInterfacereadFMyInterfaceimplementsIMyInterface;新增的內定資料型態整數方面:o新增加Int64這種長度六十四位元,範圍從-2^63to2^63–1。o32-bitunsignedinteger新增加Longword型態,範圍從0..4294967295。691附錄EDelphi4增訂的ObjectPascaloCardinal的範圍調整成與上述Longword型態相同。浮點數方面:oReal型態基於效

3、率考量,由過去佔用48-bit調整成64-bits,o新增加Real48型態,精確度與過去的Real相同,仍是48-bit。DynamicArrayDelphi4問世之前,Delphi程式設計師若需要動態長度的陣列,在不得已的情況下,往往採用以下這種「表面上陣列的語法,但實際自己配置管理記憶體」的方式來處理動態陣列:#0001procedureTForm1.Button1Click(Sender:TObject);#0002type#0003TIntegerArray=array[0..0]ofinteger;#000

4、4PIntegerArray=^TIntegerArray;#0005var#0006pArrayOfInteger:PIntegerArray;#0007j:integer;#0008begin#0009GetMem(pArrayOfInteger,10*SizeOf(Integer));#0010forj:=0to9do#0011pArrayOfInteger^[j]:=j;#0012FreeMem(pArrayOfInteger,10*SizeOf(Integer));#0013end;如果應用Delphi4新增

5、加的DynamicArray,則可改用以下的方式:varMyFlexibleArray:arrayofReal;定義之後,以SetLength函數改變陣列實際配置的記憶體大小,例如:SetLength(MyFlexibleArray,20);//0..19方便很多,是嗎?若想知道DynamicArray實際長度,請分別以High與Low函數判斷,傳回「-1」時,表示是一個該陣列的長度為零,例如:691附錄EDelphi4增訂的ObjectPascal#0001procedureTForm1.Button2Click(S

6、ender:TObject);#0002var#0003A:arrayofInteger;#0004begin#0005ShowMessage(IntToStr(High(A)));//-1#0006SetLength(A,3);#0007ShowMessage(IntToStr(High(A)));//3#0008A:=nil;#0009ShowMessage(IntToStr(High(A)));//-1#0010end;上述的0008這列,指定nil值將會釋放陣列所配置到的記憶體。值得注意的是,Compiler對

7、於DynamicArray並不會自動進行所謂的「Copy-on-Write」。請看以下的程式例:#0001procedureTForm1.Button1Click(Sender:TObject);#0002var#0003A,B:arrayofInteger;#0004begin#0005SetLength(A,1);#0006A[0]:=1;#0007B:=A;#0008B[0]:=2;#0009ShowMessage(IntToStr(A[0]));//==>2#0010end;0008這列改的雖是B[0],但Co

8、mpiler顯然還沒有聰明到在可能修改陣列內容時,將陣列內容複製一份出來(Copyon(possible)Write),於是,0009這列程式顯示的結果仍是2。於是,若要進行兩陣列各索引項目一對一的內容複製,只好自行寫迴圈一一複製,或者,採用較為簡便的寫法──呼叫Copy函數:#0001procedureTForm1.Button

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。