Delphi 4增言的Object Pascal.docx
- 文档编号:2439629
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:9
- 大小:21.46KB
Delphi 4增言的Object Pascal.docx
《Delphi 4增言的Object Pascal.docx》由会员分享,可在线阅读,更多相关《Delphi 4增言的Object Pascal.docx(9页珍藏版)》请在冰豆网上搜索。
Delphi4增言的ObjectPascal
Delphi4增言的ObjectPascal
本附妹在於就明Delphi4新增甫的ObjectPascal程式语言。
媳结来挠,Delphi
4的ObjectPascal增盯了以下续大部分:
新增加数撞内定资料型怠。
DynamicArrays
MethodandRoutineOverloading
DefaultParameters.
Implementatinginterfacesbydelegation,可用以下的窍法:
propertyMylnterface:
IMylnterfacereadFMylnterfaceimplementsIMylnterface;
新增的内定资料型憨整数方面:
新增加Int64i喜撞畏度六十四位元,能圄徙263to263-1。
32-bitunsigned
O..4294967295。
integer新增加Longword型宜昌,能圄徙
Cardinal的能圄调整成舆上述Longword型宜昌相同。
浮黠数方面:
lì'eal型宜昌基於效率考量,由边去f占用48-bit调整成64-bits,新增加lì'ea148型宜昌,精石在度舆边去的lì'eal相同,仍是48-bit。
DynamicArray
Delphi4同世之前,Delphi程式琵言十前若需要勤憨畏度的障列,在不得己的情况下,往往探用以下i副主「表面上障列的语法,但责障自己配置管理言己惶惶」的方式来应理勤宜昌障列:
H0001procedureTForm1.Button1Click(Sender:
TObject);H0002type
H0003TlntegerArray二array[O..OJofinteger;H0004PlntegerArray二TlntegerArray;
H0005var
H0006pArrayOflnteger:
PlntegerArray;H0007j:
integer;
H0008begin
H0009GetMem(pArrayOflnteger,10*SizeOf(Integer));H0010forj:
二oto9do
H0011pArrayOflnteger[jJ:
二J;
H0012FreeMem(pArrayOfInteger,10*SizeOf(Integer));H0013end
如果雇用Delphi4新增加的DynamicArray,别可改用以下的方式:
varMyFlexibleArray:
arrayofReal;
定主之後,以SetLength函数改蟹障列责陪配置的言己惶惶大小,例如:
SetLength(MyFlexibleArray,20);//O..19
方便很多,是喝?
若想知道DynamicArray责陪畏度,请分别以互zg力舆Low函数判断,傅回I-lJ峙,表示是一伺该障列的畏度局零,例如:
H0001procedureTForm1.Button2Click(Sender:
TObject);H0002var
H0003A:
arrayofInteger;H0004begin
H0005ShowMessage(IntToStr(High(A)));//-1
H0006SetLength(A,3);
H0007ShowMessage(IntToStr(High(A)));//3
H0008A:
二nil
H0009ShowMessage(IntToStr(High(A)));//-1
H0010end
上述的0008运列,指定nil值将舍释放障列所配置到的言己惶惶。
值得注意的是,Compiler剖於Dynamic
WriteJ。
请看以下的程式例:
Array益不舍自勤远行所谓的iCopy-on
H0001procedureTForm1.Button1Click(Sender:
TObject);H0002var
H0003A,B:
arrayofInteger;
H0004begin
H0005SetLength(A,1);H0006A[OJ:
二1;
H0007B:
二AH0008B[OJ:
二2;
H0009ShowMessage(IntToStr(A[OJ));//二二>2
H0010end
0008运列改的雄是B[O],但Compiler黯然遣没有聪明到在可能修改障列内容峙,将障列内容夜裂一份出来(Copyon(possible)Write),於是,0009运列程式黯示的结果仍是2。
於是,若要远行雨障列各索引项目一封一的内容丰复裂,只好自行窍坦圈一一夜裂,或者,探用较局筒便的窍法一一呼叫Copy函数:
H0001procedureTForm1.Button4Click(Sender:
TObject);H0002var
H0003A,B:
arrayofInteger;
H0004begin
110005SetLength(A,1);
110006A[OJ:
二1;
110007B:
二Copy(A,0,1);
110008B[OJ:
二2;
110009ShowMessage(1ntToStr(A[OJ));//二二>1
110010ShowMessage(1ntToStr(B[OJ));//二二>2
110011end
最後,帚不要将DynamicArray舆第二章提到的OpenArray(罔放障列)搞混了。
函式多数的同放障列,语法!
i!
t舆DynamicArray差不多,但同放障列指的是:
不限定傅入函式的障列畏度,DynamicArray别是指:
可蟹畏度的障列,雨者旱竟有所不同。
以下是一剧我辈惜的程式能例,不黯看出雨者之间的差真:
110001type
110002TDynamic1nteger二arrayofinteger;
110003
110004procedureClear_OpenArray(varA:
arrayof1nteger);
110005var
1100061:
1nteger;
110007begin
110008for1:
二otoHigh(A)doA[1]:
二0;
110009//SetLength(A,20);//不可以运麽窍
110010end
110011
110012//注意,以下雨撞窍法又有不同赔
110013//1:
procedureClear_DynamicArray(A:
TDynamic1nteger);
110014//11:
procedureClear_DynamicArray(varA:
TDynamic1nteger);
#0015procedureClear_DynamicArray(varA:
TDynamiclnteger);
#0016var
#00171:
Integer;
#0018begin
#0019for1:
二otoHigh(A)doA[1]:
二0;
#0020SetLength(A,20);//如果是DynamicArray,可以运麽窍
#0021end
#0022
#0023procedureTForml.Button3Click(Sender:
TObject);
#0024var
#0025A:
TDynamiclnteger;
#0026begin
#0027SetLength(A,3);
#0028Clear_OpenArray(A);
#0029ShowMessage(IntToStr(High(A)));//-1
#0030Clear_DynamicArray(A);
#0031//以下运列的结果,要看Cleary_DynamicArray的
#0032//多数有没有窍var
#0033ShowMessage(IntToStr(High(A)));
#0034end
言青育我注意0004的Clea伽θnArray,傅入的是「由整数槽成的障列,不限定障列的畏度J,0015的Clear_DynamicArray的窍法别是「接受一倒可蟹勤障列畏度的勤憨障列J,若不远1美窍,吉塌就赞成了罔放障列了。
MethodandRoutineOverloading
所谓的MethodOverloading,筒罩地就:
一伺以上的函式使用相同的函式名祸。
j喜:
r特性是ObjectPasca1畏久以来一直有人想要创一直没有支援的期盼,佟於,De1phi4多了一伺保留宇:
overload一一相同名稿的雨伺函式,只要在宣告峙额外加上overload,即使函式的多数型怠不同,De1phi也舍祠呼叫吉峙傅入的多数资料型怠,泱定该呼叫哪一伺函式。
例如以下运用例子:
110001//雨伺Divide都必须窍over1oad保留宇
110002functionDivide(X,Y:
Doub1e):
Doub1e;over1oad;
110003begin
110004Resu1t:
二X/Y;
110005end
110006
110007functionDivide(X,Y:
Integer):
Integer;over1oad;
110008begin
110009Resu1t:
二XdivY
110010end
110011
110012procedureTForm1.Button1C1ick(Sender:
TObject);
110013var
110014a,b,c:
integer;
110015i,j,k:
Doul】1e;
110016begin
110017a:
二10
110018b:
二3
110019i:
二10
110020j:
二3;
110021c:
二Divide(a,b);
110022k:
二Divide(i,j);
H0023ShowMessage(IntToStr(c));//3
H0024ShowMessage(FloatToStr(k));//3.333333..H0025end
言青育我注意到0002舆0007运雨列的Divide函数,函数名稻相同,但傅入的多数型
宜昌舆函数的傅回值1直不相同,即使如此,0023舆0024呼叫到Divide峙,>量是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Delphi 4增言的Object Pascal Object