Delphi æ¯ä»¥Object Pascal è¯è¨ä¸ºåºç¡çå¯è§åå¼åå·¥å ·ï¼æ以è¦å¦å¥½Delphiï¼é¦å è¦ææ¡çå°±æ¯Object Pascal è¯è¨ãObject Pascalè¯è¨æ¯Pascalä¹ç¶å¨1985å¹´äºApple Macintoshæºå¨ä¸å®ç°çãåæ¥Borlandå ¬å¸ä¹å¨å®çPascal产åTurbol Pascal/Delphiä¸å®ç°äºObject Pascalã
注ï¼è¯¥ç³»åå 容æ´çèªä»¥ä¸é¾æ¥ã
http://chanlei001.blog.163.com/blog/static/3403066420117261154351
http://www.cnblogs.com/del/archive/2007/12/04/982167.html
http://blog.csdn.net/hudie1234567/article/details/6403419
http://www.cnblogs.com/del/archive/2007/12/10/989467.html
http://www.cnblogs.com/del/archive/2007/12/04/982851.html
http://gehy1.blog.163.com/blog/static/3447887820091194619693/
è¯è¨åºç¡
Object Pascal æ¯ä¸ç§é«çº§ç¼è¯è¯è¨ï¼å»ºç«äºfree pascal åturbo pascal ä¹ä¸ï¼å ·æ强类åï¼å¯¹æ°æ®ç±»åçæ£æ¥éå¸¸ä¸¥æ ¼ï¼ç¹æ§ï¼æ¯æç»æååé¢å对象ç¼ç¨ãå®çä¼ç¹å æ¬ä»£ç çæ读æ§ãå¿«éç¼è¯ï¼ä»¥åæ¯æå¤ä¸ªåå æ件ä»èå®ç°æ¨¡ååç¼ç¨ãObject Pascal è¯è¨æ¯å¨Pascal è¯è¨çåºç¡ä¸åå±èµ·æ¥çï¼å®ç»§æ¿äºPascal è¯è¨è¯æ³ä¸¥è°¨ãæ°æ®ç»æ丰å¯çä¼ç¹ï¼åæ¶èå ¥äºé¢å对象ç¼ç¨çè¯æ³è¦ç´ ï¼ä½¿ä¹æ为ä¸ä¸ªå®åçé¢å对象çç¼ç¨è¯è¨ãPascalç¼è¯å¨ï¼å æ¬é£äºObject Pascalçç¼è¯å¨ï¼å¨çæé«ä¼å代ç åæ¶ï¼ä¸è¬è¿è¡é常快ã
1 Object Pascal è¯è¨ç¼åç¯å¢
éçWindows æä½ç³»ç»çæ®åï¼å¾å°æ人å¨DOS ç¯å¢ä¸ç¼åç¨åºäºï¼ä¸é¢å°ä¸ºè¯»è ä»ç»å¦ä½ä½¿ç¨Delphi ç¼åObject Pascal ç¨åºã
ä¸è¬æ¥è¯´ï¼ä½¿ç¨Delphi å¼ååºæ¥çç¨åºæ以ä¸3 ç§ã
1.å¾å½¢çé¢ç¨åº
å¾å½¢çé¢ç¨åºæ¯ç®åWindows å¹³å°æ常è§çåºç¨ç¨åºï¼è¿äºç¨åºéè¿çªä½å对è¯æ¡ä¸ç¨æ·è¿è¡ä¿¡æ¯äº¤äºï¼å®ç°ä¸å®çåè½ãä¾å¦Microsoft å ¬å¸çOffice ç³»å软件åæ£å¨ä½¿ç¨çDelphi çï¼å®ä»¬é½æ¯å¾å½¢çé¢ç¨åºã
2.æ§å¶å°ç¨åº
æ§å¶å°ç¨åºæ¯æä¸äºæ²¡æå¾å½¢ç¨æ·çé¢ç32 ä½Windows åºç¨ç¨åºï¼ç±»ä¼¼å¨DOS ç¯å¢ä¸è¿è¡çç¨åºãè¿äºç¨åºå¾å°è¦æ±ç¨æ·è¾å ¥å¤§éçä¿¡æ¯ï¼ä¸è¬åªå®ç°ç¹å®çåè½ãæ§å¶å°ç¨åºç代ç è¾å°ï¼å ç¨çç³»ç»èµæºå°ï¼å æ¤ç¼è¯ãé¾æ¥çé度æ¯è¾å¿«ã
3.æå¡å¨ç¨åº
æå¡å¨ç¨åºå¯ä»¥æ¥ååå¤ç客æ·åºç¨ç¨åºç请æ±ï¼å¹¶å°ç»æä¿¡æ¯è¿åç»å®¢æ·åºç¨ç¨åºãæå¡å¨åºç¨ç¨åºä¸è¬å¨åå°è¿è¡ï¼ä¸éè¦å¤§éç人æºäº¤äºä¿¡æ¯ã
ä¸é¢ä»¥å¼åä¸ä¸ªç®åçæ§å¶å°ç¨åºä¸ºä¾ï¼å读è ä»ç»Delphi ä¸çæObject Pascal ç¨åºçåºæ¬æ¹æ³ï¼å¹¶å¯¹Object Pascal ç¨åºçä¸è¬ç»æè¿è¡ç®å说æã
å¨Delphi éæå¼åç¯å¢ä¸ï¼ä¾æ¬¡éæ©"File/New/Other"èå项æå¼"New Items"对è¯æ¡ãéä¸"New"æ ç¾é¡µä¸ç"Console Application"é项ï¼åå»"OK"æé®ï¼ä»£ç ç¼è¾å¨ä¸å°èªå¨æå¼ä¸ä¸ªåå§å为Project1.dpr çæ§å¶å°ç¨åºã请å°Project1.dpr æ件修æ¹ä¸ºå¦ä¸å 容ï¼
program Project1;{$APPTYPE CONSOLE}//uses SysUtils;var
str:string;begin
// Insert user code here writeln(âæ¨å¥½ï¼è¿æ¯ä¸ä¸ªç¤ºèç¨åºï¼è¯·è¾å
¥ä¸è¡æåï¼â);
readln(str);
writeln(âæ¨è¾å
¥çæ¯ï¼â,str);
readln;end.
ä¾æ¬¡éæ©âFileâ/âSave Allâèå项å¯ä»¥å°æ´æ¹åçå·¥ç¨æ件ä¿åå°æå®çæ件夹ä¸ãæ F9 é®è¿å ¥ç¼è¯ãé¾æ¥ãè¿è¡ç¨åºãå¾ ç¨åºæ示âæ¨å¥½ï¼è¿æ¯ä¸ä¸ªç¤ºèç¨åºï¼è¯·è¾å ¥ä¸è¡æåï¼âæååï¼ç¨æ·å¯ä»¥è¾å ¥ä¸äºå 容ï¼ä¾å¦è¾å ¥âæ©ä¸å¥½ï¼âï¼ç¨åºå°è¾åºç»æï¼âæ¨è¾å ¥çæ¯ï¼æ©ä¸å¥½ï¼âã
以ä¸æ¯å¯¹è¯¥ç¨åºçå ç¹è¯´æï¼
ç¨åºç¬¬2 è¡ä¸{$APPTYPE CONSOLE}æ¯ä¸ä¸ªç¼è¯å¨æ令ï¼å®åè¯ç¼è¯å¨è¿ä¸ªç¨åºæ¯ä¸ä¸ªæ§å¶å°ç¨åºã
uses SysUtils è¯å¥åå äºä¸¤ä¸ªæ线ï¼å°è¿æ¡è¯å¥ä»¥æ³¨éè¯å¥çå½¢å¼å±è½æäºï¼å 为å¨è¿ä¸ªä¾åä¸æ¯ä¸éè¦SysUtils åå çã
writeln åreadln 两个å½æ°åå«è¡¨ç¤ºè¾åºåè¾å ¥ä¸è¡å符ãç¨åºæåçreadln è¯å¥æ¯ä¸ºäºéå®çªå£ï¼å¦åè¾åºç»æå°å¾å¿«æ¶å¤±ã
2 注éè¯å¥
ä½ä¸ºèµ·ç¹ï¼é¦å ä»ç»å¦ä½å¨Object Pascal 代ç ä¸æ·»å 注éãå¦æä¸ç»ç¨åºå ä¸éå½ç注éï¼ä¸æ®µæ¶é´åå°±å¾é¾çæ¸ ç¨åºçæµç¨ãåæ¶ç¼è¯å¨ä¼å°æ³¨è§£å¿½ç¥ï¼ä¸ä¼å½±åç¨åºçç¼è¯ä¸è¿è¡ã
Object Pascal ä¸æ3 ç§ç±»åç注éã
è±æ¬å·æ³¨éï¼ç»å符å·â{âåâ}âçæ对使ç¨ï¼è¡¨ç¤ºå®ä»¬ä¹é´çå 容æ¯æ³¨éé¨åã
åæ¬å·/æå·æ³¨éï¼ç»å符å·â(*âåâ*)âçæ对使ç¨ï¼è¡¨ç¤ºå®ä»¬ä¹é´çå 容æ¯æ³¨éé¨åã
Visual C++é£æ ¼çåææ 注éï¼ç¬¦å·â//âçåç¬ä½¿ç¨ï¼è¡¨ç¤ºåé¢çå 容æ¯æ³¨éé¨åã
çä¸é¢çä¾åï¼
{è±æ¬å·æ³¨é}ã(*åæ¬å·/æå·æ³¨é*)ã//C++é£æ ¼ç注é
å两ç§æ³¨éå¨æ¬è´¨ä¸æ¯ç¸åçï¼ç¼è¯å¨æå¤äºéå®ç¬¦å¤´åéå®ç¬¦å°¾ä¸é´çå 容å½ä½æ³¨éãè±æ¬å·ååæ¬å·/æå·æ¯è¾éåå¨å¤§æ®µæ³¨éæ¶ä½¿ç¨ãå¦æå¨â{âæâ(*âåé¢æ¯ä¸ä¸ªâ$â符å·æ¶ï¼è¡¨ç¤ºè¯¥å¥ä¸ºä¸ä¸ªç¼è¯å¨æ令ï¼ä¸æ®éç注éä¸åï¼é常ç¨æ¥å¯¹ç¼è¯è¿ç¨è¿è¡è®¾ç½®ï¼ä¾å¦1.1 èä¸ç¤ºä¾ç第2è¡ä»£ç ï¼
{$APPTYPE CONSOLE}
对äºVisual C++é£æ ¼ç注éæ¥è¯´ï¼åææ åé¢å°è¡å°¾çå 容被认为注éãæ¤å½¢å¼æ¯è¾éç¨äºåè¡åå°éå è¡æ³¨éçæ åµã
注æï¼ç¸åç±»åç注éä¸è¦åµå¥ä½¿ç¨ãè½ç¶ä¸åç±»åç注éè¿è¡åµå¥å¨è¯æ³ä¸æ¯åæ³çï¼ä½ä¸å»ºè®®è¿æ ·åãä¾å¦ï¼
{(*è¿æ¯åæ³ç*)}
(*{è¿æ¯åæ³ç}*)
(*(*è¿æ¯éæ³ç*)*)
{{è¿æ¯éæ³ç}}
3 æ è¯ç¬¦
Object Pascal è¯è¨ä½¿ç¨çæ è¯ç¬¦å æ¬åæ¯A-Zãa-zãæ°å0-9 åå ¶ä»ä¸äºæ åå符ã
表1-1 æ示çå个å符æ¯Object Pascal è¯è¨çç¹æ®ç¬¦å·ã
表1-1 Object Pascal è¯è¨çç¹æ®ç¬¦å·çå个å符
ç¹æ®ç¬¦å·
$ & * # * ( ) [ ] { } ^ ; : @ < = > , . * + /
表1-2 æ示çå符ç»åæ¯Object Pascal è¯è¨çå个çç¹æ®ç¬¦å·ã
表1-2 Object Pascal è¯è¨çç¹æ®ç¬¦å·çå符ç»å
ç¹æ®ç¬¦å·
(* *) (. .) .. // := <> >= <=
注æï¼[ ]ä¸ï¼. .ï¼å¯¹åºï¼{ }ä¸(* *)对åºãå«ä¹å®å ¨ç¸åï¼å¯ä»¥ç¸äºæ¿ä»£ã
å¨Object Pascal è¯è¨ä¸ï¼æ è¯ç¬¦ç¨æ¥æ è¯åéã常éãå±æ§ãç±»ã对象ãè¿ç¨ãå½æ°ãç¨åºãç»ä»¶åºçãæ è¯ç¬¦å¯ä»¥ç±ä»»æé¿åº¦ä¸å¸¦ç©ºæ ¼çå符串ç»æï¼ä½å¯¹äºç¼è¯å¨æ¥è®²åªæåé¢255个å符ææãå ¶ä¸ï¼æ è¯ç¬¦ç第1个åç¬¦å¿ é¡»æ¯åæ¯æä¸å线ï¼å ¶ä½å符å¯ä»¥æ¯åæ¯ãæ°åæä¸å线ãé常ï¼æ è¯ç¬¦ç±ä¸ä¸ªæå¤ä¸ªå ·æéå½æä¹çè±æåè¯ç»æãObject Pascal è¯è¨å¯¹åºååæ¯ç大å°åæ¯ä¸ææçãå¨ç¼ç¨è¿ç¨ä¸ï¼æ好æ¯ä¸ªåè¯çé¦åæ¯å¤§åï¼å ¶ä»åæ¯å°åï¼ä»¥ä¾¿äºåºåã
4 ä¿çååæ令å
Object Pascal è¯è¨å®ä¹äº65 个ä¿çåï¼å®ä»¬ä¸è½è¢«å®ä¹ä¸ºæ è¯ç¬¦ï¼å¦è¡¨1-3 æ示ã
表1-3 Object Pascal è¯è¨çä¿çå
ä¿çå
and
array
as
asm
begin
case
class
Const
constructor
destructor
dispinterface
div
do
downto
else
end
except
exports
file
finalization
finally
for
function
goto
if
implementation
in
inherite
initialization
inline
is
interface
label
library
mod
Nil
not
object
of
or
out
packed
procedure
program
property
raise
record
repeat
resourcestring
set
shl
shr
string
then
threadvar
to
try
type
until
unit
uses
var
while
with
xor
Object Pascal è¿å®ä¹äº39 个æ令åï¼å®ä»¬å ·æç¹æ®å«ä¹ãä½æ¯ï¼å¨ç¨æ·éæ°å®ä¹äºæ令ååï¼å¨ä½ç¨åå å®ä»¬å°±å¤±å»äºåæ¥çæä¹ï¼å¦è¡¨1-4 æ示ã
表1-4 Object Pascal è¯è¨çæ令å
æ令å
absolute
abstract
assembler
automated
cdecl
contains
default
dispid
dynamic
export
external
far
forward
implements
index
message
name
near
nodefault
overload
override
package
pascal
private
protected
public
published
read
readonly
register
reintroduce
requires
resident
safecall
stdcall
stored
virtual
write
writeonly
ä¸è¦å®ä¹åå®ä»¬ååçæ è¯ç¬¦ãå¨Delphi éæå¼åç¯å¢ç代ç ç¼è¾å¨ä¸ï¼ä¿çååæ令å以é»ä½æ¾ç¤ºï¼è¿æ ·å°±å¤§å¤§æ¹ä¾¿äºç¨æ·ç使ç¨ï¼ä¸å¿ æ å¿å 为ä¸å°å¿èé误å°å°ä¿çåææ令åå®ä¹ä¸ºæ è¯ç¬¦ã
published å public
å ¬å¸æåï¼publishedï¼åå ¬å ±æåï¼publicï¼å ·æç¸åçå¯è§åº¦,ä½publishedä¸å£°æçä¼æ¾ç¤ºå¨å±æ§æ ï¼public åä¸ä¼ã
主è¦åºå«å¦ä¸ï¼
ï¼1ï¼ published å¯è§åº¦ä¸publicä¸æ ·ã
ï¼2ï¼ publishedä¸publicçåºå«æ¯æ¬åºåçæåå¯ä»¥å¨delphi对象æ£æ¥å¨ä¸åºç°ï¼èæ¤å·®å«æ¥èªRTTIæºå¶ãRTTI(Run time type Information)æ¯ä¸ºPublishedå¶ä½ï¼å®å 许åºç¨ç¨åºå¨ææ¥è¯¢è¯¥ç±»çpublishedçå段ãå±æ§ï¼å æ¬å±æ§åäºä»¶ï¼ï¼å¹¶ä¸å 载类çæ¹æ³ãRTTIå¯å¨æ¡ä»¶æ¯ææ¡ä»¶çââ使â{$M+}âç¼è¯æ令çç¶æä¸æè½å¯å¨RTTIæå®çç¥å 类以ä¸è¿°ç¶æç¼è¯ï¼ä¹å¯ä»¥å¯å¨RTTIï¼ç¶å该类æ£æ¥å¨æè½æ¾ç¤ºå¨æ£æ¥å¨ä¸ã
ï¼3ï¼ é¤äºRTTIæ¡ä»¶éå¶åï¼publishedçå±æ§ä¹æç±»åéå¶ã
Aï¼åºæ°ãå符串ï¼stringï¼ãclassãinterface以åmothodâpointerç±»ï¼é½å¯ä»¥åpublishedçå±æ§
Bï¼èå´å¨0-31ä¹é´çéåï¼è¯¥éåå¼å¿ 须满足byteãwordædouble wordç±»æè½åpublishedå±æ§
Cï¼é¤äºRealç±»å¤çææå®æ°ç±»ï¼é½å¯ä»¥å为publishedå±æ§
Dï¼æ°ç»ç±»ä¸å¯ä»¥åpublishedå±æ§
Eï¼ææçæåå½æ°é½å¯ä»¥ä½ä¸ºpublishedçäºä»¶ï¼ç¶èéè½½overrideçå½æ°ä¸å¯ä»¥ä½ä¸ºpublishedäºä»¶
Fï¼å段Fieledä¸è½ä½ä¸ºPublishedçå±æ§ï¼é¤éå®å±äºclassæinterfaceç±»
property
propertyæ¯ Delphi çç¹æ§ï¼å®ä½¿å¾æ¹æ³å ·æäºå段çè°ç¨ç¹å¾ï¼å¹¶èµäºå段æ§è¡å¨ä½çè½åãæ¯å¦ï¼
edt.Text = "test";
è¿ä¸ªæ¶åedtææ¬æ¡çå 容ä¼éä¹æ¹åï¼ä½æ¯âç论âä¸Textåºè¯¥åªæ¯æ¹åäºTextæå¨çå åæ°æ®èå·²ï¼ä¸ºä»ä¹ä¼å¯¼è´çªå£æ´æ°çé¢è¿ä¸äºåå¨ä½ï¼è¿å°±æ¯å 为property è¿ä¸ç¹æ§ãproperty æ¯ Borland 为 C++ æ©å±çè¯æ³ç¹æ§ï¼ç®çå¨äºä½¿ C++ Builder è½å¤æ¹ä¾¿çä½¿ç¨ VCL åºï¼æ¯ç« VCL æ¯ä½¿ç¨ Object Pascal åçãå¦æå¦ä¹ è¿C#çæååºè¯¥ä¼å¾å®¹æç解ï¼å 为C#çå±æ§å°±æ¯å¦ä¹ èª Delphiï¼æ¯ç« C# å Delphi æ¯åä¸ä¸ªè®¾è®¡è ã
å®ä¹ä¸ä¸ªå±æ§Propertyçåºæ¬æ ¼å¼å¦ä¸ï¼
property å±æ§å : å±æ§å¼ç±»å read å±æ§è¯»å½æ°/å±æ§å¼åé write å±æ§åå½æ°/å±æ§å¼åé
property æ¯å±æ§å®ä¹å ³é®åãå±æ§çç¹å¾ç±»ä¼¼äºå段ï¼æ以å±æ§åå°±åå段åï¼å±æ§å¼ç±»åå°±åå段çå¼ç±»åãå±æ§è¯»å½æ°ï¼æ¯å±æ§è¢«â读åâæ¶ææ§è¡çæä½ï¼è¿æ ·å¨æ§è¡âåå¼âæä½æ¶ï¼å ·å¤äºæ§è¡å ¶ä»å¨ä½çå¯è½ãå¦å¤ï¼å±æ§å¼åéï¼å¯ä»¥æ¯ property æå¨ç±»è½å¤è®¿é®çä»»ä½åéï¼å¦æ使ç¨äºå±æ§å¼åéï¼åç¸å½äºå±æ§å¼ç´æ¥ä»å¼åéä¸è·åï¼è¿åç´æ¥èµå¼æ¯æ²¡æä»ä¹å·®å«çãå±æ§åå½æ°ï¼æ¯å±æ§è¢«âåå ¥âæ¶ææ§è¡çæä½ï¼è¿æ ·å¨æ§è¡å±æ§âèµå¼âæä½æ¶ï¼å ·å¤äºæ§è¡å ¶ä»å¨ä½çå¯è½ãæ¯å¦ï¼åå ¥edtçTextå±æ§æ¶ï¼çªå£ä¼åæ¶æ§è¡çé¢æ´æ°æä½ãå¦å¤ï¼å±æ§å¼åéåä¸é¢æ述类似ï¼å¦æ使ç¨äºï¼å°±ç¸å½äºå°ä¼ æ¥çå±æ§å¼ç´æ¥èµå¼å°å¯¹åºçå±æ§å¼åéãè¿éçå½æ°æ¯çæ£çå½æ°ï¼ä¸åC#ä¸é£æ ·çgetteråsetterï¼æ以ä¼æäºé¾ä»¥ç解ã
å±æ§è¯»å½æ°å£°æï¼
function 读å½æ°å: å±æ§å¼ç±»å;
å ¶ä¸è¯»å½æ°åå¯ä»¥èªå®ä¹ï¼åªè¦åå±æ§å£°æä¸ä¸æ ·å³å¯ï¼è¯¥å½æ°çè¿åå¼å°±æ¯è¯»å±æ§æä½æ¶å®é è·åçå¼ã
å±æ§åå½æ°å£°æï¼å ¶å®æ¯ä¸ä¸ªåå½æ°ï¼ï¼
procedure åå½æ°å(value : å±æ§å¼ç±»å);
å ¶ä¸åå½æ°åå¯ä»¥èªå®ä¹ï¼åªè¦åå±æ§å£°æä¸ä¸æ ·å³å¯ï¼è¯¥å½æ°åæ°valueï¼å°±æ¯å¯¹å±æ§èµå¼æ¶ä¼ éè¿æ¥çå®é å¼ã
读å½æ°ååå½æ°å¿ 须设置ä¸ä¸ªï¼å¦æåªè®¾ç½®è¯»å½æ°ï¼è没æ设置åå½æ°ï¼åæ¶å»æwriteå ³é®åï¼ï¼è¿æ ·çå±æ§å°±æ¯åªè¯»å±æ§ï¼åçä¹å¯ä»¥è®¾ç½®åªåå±æ§ã为äºä¿è¯å±æ§å ¬å¼æ§çåæ¶æ©ç读åå½æ°çå¯è§æ§ï¼å¯ä»¥å°è¯»åå½æ°è®¾ç½®ä¸ºç§æï¼èå°å±æ§è®¾ç½®ä¸ºå ±æï¼è¿æ ·å¯ä»¥é¿å å°è¯»åå½æ°æ¬èº«æ´é²ç»è°ç¨è ã
举ä¾ï¼
TxKernelSearchThread = class(TThread) private
keyword_list: TStringList; procedure SetKeyword(value: UnicodeString); public
property Kerword:UnicodeString write SetKeyword;
...end;procedure TxKernelSearchThread.SetKeyword(value: UnicodeString);beginãif value = '' then
Exit;
ãExtractStrings([' '],[' '],PWideChar(value),Self.keyword_list);end;
ä¸é¢æ¯ä¸ä¸ªåªåå±æ§çä¾åãå±æ§çä¸ä¸ªå¾éè¦çåºç¨å°±æ¯VCLä¸çæ§ä»¶å±æ§ï¼ä»¥åäºä»¶å±æ§çï¼è¿ä¹å°±è§£éäºä¸ºä»ä¹åææ¬æ¡çTextå±æ§èµå¼ï¼ä¼æ´æ°çé¢æä½ï¼è¿æ£æ¯å 为å±æ§å°å段åå½æ°çç¹å¾ç»åäºèµ·æ¥ã
Record åPacked Record
Record ç»æä½è¡¨æç¼è¯å¨ç¼è¯æ¶è¦æ±è¿è¡å对é½ï¼packed Record çç»æä½è¡¨æç¼è¯å¨ç¼è¯è¯¥ç»æä½æ¶ä¸éè¦è¿è¡å对é½ï¼è¿ç§æ¹å¼å¯¹ç»æä½ä¸çå段访é®ä¼æ¯ç¬¬ä¸ç§æ¹å¼æ ¢ï¼ä½æ¯æ´è约空é´ãæPacked çå ç¨å åå°ï¼ä½æ¯éåº¦æ ¢ä¸ç¹ã没Packed çå ç¨å å大ï¼ä½æ¯é度快ä¸ç¹ã
å¨windowsä¸ï¼å åçåé ä¸æ¬¡æ¯4个åèçï¼è Packed æåèè¿è¡å åçç³è¯·ååé ï¼è¿æ ·é度è¦æ ¢ä¸äºï¼å 为éè¦é¢å¤çæ¶é´æ¥è¿è¡æéçå®ä½ãå æ¤å¦æä¸ç¨Packedçè¯ï¼Delphiå°æä¸æ¬¡4个åèçæ¹å¼ç³è¯·å åï¼å æ¤å¦æä¸ä¸ªåé没æ4个åè宽çè¯ä¹è¦å 4个åèï¼è¿æ ·æµªè´¹äºä¸äºç©ºé´ï¼ä½æé«äºæçã
inherited
inheritedå°±æ¯è°ç¨ç¥å ç±»çå½æ°ï¼å¦æä¸å¸¦åæ°å°±æ¯é»è®¤è°ç¨ååå½æ°ï¼å¦æ带åæ°å表æåç±»ä¸çå½æ°ä¸ªæ°å¯è½æ¯ç¥å ç±»è¦å¤åå ¶ä¸çå 个åæ°ä¼ è¿å»ã
Override å overload
æ¹æ³çéåOverridingåéè½½Overloadingæ¯Javaå¤ææ§çä¸å表ç°ãéåOverridingæ¯ç¶ç±»ä¸åç±»ä¹é´å¤ææ§çä¸ç§è¡¨ç°ï¼éè½½Overloadingæ¯ä¸ä¸ªç±»ä¸å¤ææ§çä¸ç§è¡¨ç°ãå¦æå¨åç±»ä¸å®ä¹ææ¹æ³ä¸å ¶ç¶ç±»æç¸åçå称ååæ°ï¼æ们说该æ¹æ³è¢«éå (Overriding)ãåç±»ç对象使ç¨è¿ä¸ªæ¹æ³æ¶ï¼å°è°ç¨åç±»ä¸çå®ä¹ï¼å¯¹å®èè¨ï¼ç¶ç±»ä¸çå®ä¹å¦å被âå±è½âäºãå¦æå¨ä¸ä¸ªç±»ä¸å®ä¹äºå¤ä¸ªååçæ¹æ³ï¼å®ä»¬ææä¸åçåæ°ä¸ªæ°ææä¸åçåæ°ç±»åï¼å称为æ¹æ³çéè½½(Overloading)ãOverloadedçæ¹æ³æ¯å¯ä»¥æ¹åè¿åå¼çç±»åã
Delphi æ¯ç¨override å ³é®åæ¥è¯´æå½æ°è¦ççã被è¦ççå½æ°å¿ é¡»æ¯è(virtual)çï¼æè æ¯å¨æ(dynamic)çï¼ä¹å°±æ¯è¯´è¯¥å½æ°å¨å£°ææ¶åºè¯¥å å«è¿ä¸¤ä¸ªæ示åä¸çä¸ä¸ªï¼æ¯å¦ï¼
procedure Draw; virtual;
å¨éè¦è¦ççæ¶åï¼åªéè¦å¨åç±»ä¸ç¨override æ示åéæ°å£°æä¸ä¸å°±å¯ä»¥äºã
procedure Draw; overrideï¼
å ¶ä¸ï¼virtual èç±»åï¼dynamic å¨æï¼overload éè½½ï¼override éå
å ³äºæ¹æ³å®ä¹å ³é®åç说æ
å¨è¿ç¨å®ä¹å£°ææ¶å æ¬äºçå ³é®åçå«ä¹ï¼
static 表示æ¯éææ¹æ³ï¼éææ¹æ³æ¯æ¹æ³ç缺çç±»åï¼ä¸è½è¢«è¦çï¼
virtual 表示æ¯èææ¹æ³ï¼
dynamic 表示æ¯å¨ææ¹æ³ï¼
è¿ä¸¤ç±»æ¹æ³çå ±åç¹æ¯é½å¯ä»¥è¢«è¦ç(override)ï¼åºå«ä» å¨äºè¿è¡æ¶è°ç¨æ¹æ³æ¶çæ´¾åæºå¶ï¼virtualæ¹æ³ä¸ºæ§è¡é度åäºä¼åï¼èdynamicæ¹æ³å为代ç 大å°åäºä¼åï¼ç»å¸¸è¢«è¦ççæ¹æ³åºè¯¥å®ä¹ä¸ºvirtualæ¹æ³;
message 表示æ¯æ¶æ¯å¤çæ¹æ³ï¼å¨å ³é®åmessageåé¢çå¼ææäºè¿ä¸ªæ¹æ³è¦ååºçæ¶æ¯ï¼ç¨æ¶æ¯å¤çæ¹æ³æ¥ååºWindowsçæ¶æ¯ï¼è¿æ ·å°±ä¸ç¨ç´æ¥æ¥è°ç¨å®ï¼
override 表示æ¯è¦çæ¹æ³ï¼è¦æ±ç¥å ç±»ä¸å¿ é¡»æ该æ¹æ³çå®ä¹ï¼å¹¶ä¸åæ°ç顺åºåç±»ååè¿å¼çç±»åå¿ é¡»å¹é ï¼ç¨äºæ©å±ç¥å ç±»ä¸ç该æ¹æ³èä¸æ¯å代å®(å¦ä¸è°ç¨ç¥å ç±»ä¸ç该æ¹æ³åçåäºå代)ï¼
overload 表示æ¯éè½½æ¹æ³ï¼ç¨äºä¸ä¸ªç±»ä¸æ许å¤ååçæ¹æ³å¸¦çä¸åçåæ°è¡¨çæ å½¢ï¼(å±æ§ç读åæ¹æ³ä¸è½è¢«éè½½)ï¼
abstract 表示æ¯æ½è±¡æ¹æ³ï¼æ¯æ²¡æå®ç°çæ¹æ³ï¼å¹¶ä¸å¿ é¡»æ¯virtualædynamicæ¹æ³ï¼å³å¨abstractåé¢å¿ é¡»ævirtualædynamicå ³é®åï¼å ¶å®ç°é¨åå¨æ´¾çç±»ä¸ï¼å¦
procedure DoSomething; virtual; abstract;
reintroduce表示æ¯éæ°å£°æçæ¹æ³ï¼ç¨äºæ¹æ³çå称ä¸ç¥å ç±»ä¸çæ个æ¹æ³å称ç¸åçæ å½¢ï¼
virtual å dynamicå®ä¹çèå½æ°ï¼é½æ¯ä¸ºäºåç±»overrideç¨ç,åªä¸è¿å®ä»¬çå®ç°ä¸ä¸æ ·vitrual å ç¨ç空é´å¤§ç¹ï¼ä½é度快äºãdynamciæ£å¥½ç¸å.
stdcallæ¯ä¸ç§è°ç¨æ¹å¼,æ æäºåæ°å ¥stackç顺åºåæ¸ é¤çæ¹å¼ï¼å ·ä½å¯çDelphiç帮å©.
class function ä¸ function
class function ç±»ä¼¼äº c++ä¸çéææ¹æ³ï¼ä¸éè¦å»ºç«ç±»çå®ä¾å°±å¯ä»¥è°ç¨ï¼å¦TYourClass.YourMethod.
functionå°±æ¯ç±»æåæ¹æ³ï¼å¿ 须建ç«è¯¥ç±»çå®ä¾æå¯ä»¥è°ç¨ã
5 åé
é常æç §åé声æçèå´ï¼å¯ä»¥å为ï¼å ¨å±åéï¼ç±»åéï¼å±é¨åéã
å ¨å±åéï¼æ¯æå¨ç±»å¤å£°æçåéï¼é常è¿ç§åéæ¯å¨æ´ä¸ªå·¥ç¨å ææçï¼ä¹å°±æ¯è¯´å¨æ´ä¸ªå·¥ç¨ä¸çç±»é½å¯ä»¥ä½¿ç¨ã该åéççåå¨ææ¯å¨å·¥ç¨å建æ¶ææï¼å·¥ç¨éæ¯æ¶éæ¯ã
ç±»åéï¼æ¯æå¨ç±»ä¸å£°æçåéï¼è¿ç§åéå¨ç±»ä¸çæ¹æ³é½å¯ä»¥ä½¿ç¨ãå ¶çå½å¨ææ¯å¨ç±»å建æ¶ææï¼ç±»éæ¯æ¶éæ¯ã
å±é¨åéï¼æ¯æå¨æ¹æ³å é¨å£°æçåéï¼è¿ç§åéåªè½å¨æ¹æ³å é¨ä½¿ç¨ãå ¶çå½å¨æä¹æ¯å¨æ¹æ³å é¨ææï¼å½æ¹æ³è°ç¨ç»æåï¼å ¶å é¨æ声æçåéä¹éä¹éæ¯ã
å ¨å±åé
å¦ææ们å¨åºç¨ç¨åºä¸ä¸ªåå ä¸çinterfaceå ³é®ååimplementationå ³é®åä¹é´çåºåï¼å®ä¹ä¸ä¸ªå ¨å±åéï¼åå¦è¿ä¸ªåå å¨å«çå°æ¹è¢«å¼ç¨ï¼é£ä¹è¿ä¸ªåå çå ¨å±åéè½å¤å¨å«çå°æ¹è¢«è®¿é®å°ï¼å½ç¶æ们ä¹å¯ä»¥å¨åºç¨ç¨åºä¸ä¸ªåå ä¸çimplementationå ³é®åçåé¢å®ä¹å ¨å±åéï¼ä¸è¿æ¤æ¶å¨è¿éå®ä¹çå ¨å±åéåªè½å¨æ¬åå ä¸è¢«è®¿é®å°ï¼ä¹å°±æ¯è¯´å®æ¯è¿ä¸ªåå ç§æçï¼å¨å«çåå ä¸å°ä¸è½è¢«è®¿é®å°ãå ¨å±åéå¨åºç¨ç¨åºçæ°æ®åºåé å åï¼å®åå¨äºå¯æ§è¡æ¨¡åï¼EXEæDLLçï¼çæ件影åå é¨ï¼å¨ç¨åºç¼è¯æ就被å³å®ï¼ç´å°åºç¨ç¨åºç»æï¼å ¨å±åéæå ç¨çå åå°åæ¯åºå®ä¸åçã
å ¨å±çéæéç±»åï¼å£°æåèªå¨åé å åï¼å¹¶åå§åå¼ãå ¨å±çæéç±»åï¼å£°æåä¸èªå¨åé å åï¼å¼ä¸ºnilã
å±é¨åé
æ们å¯ä»¥å¨å½æ°ææ¹æ³ï¼å å«è¿ç¨ï¼ä¸å®ä¹å±é¨åéï¼å±é¨åéå¨åºç¨ç¨åºçæ ä¸è¿è¡åé ï¼å¹¶ä¸æ»æ¯å¨æ ä¸åé ï¼å±é¨åéçå åæ¯å¨å½æ°ææ¹æ³ï¼å å«è¿ç¨ï¼è¢«è°ç¨æ¶åé ï¼å¨å½æ°ææ¹æ³ï¼å å«è¿ç¨ï¼è°ç¨ç»ææ¶å ¶å å被éæ¾ãç±äºå½æ°ææ¹æ³ï¼å å«è¿ç¨ï¼å¨æ¯æ¬¡è¢«è°ç¨æ¶ï¼æ 顶å¯è½åçååï¼å æ¤å±é¨åéçå åå°åæ¯ååçï¼å±é¨çéæéç±»åï¼å£°æåèªå¨åé å åï¼ä¸åå§åå¼ï¼å¼ä¸ç¡®å®ï¼åå³ä¸å«çç¨åºå¯¹è¿åå åçæä½ï¼ãå±é¨çæéç±»åï¼å£°æåä¸èªå¨åé å åï¼ä½ä¼éæºæåä¸ä¸ªå°åï¼æ以å°åä¸ä¸ºnil
注ï¼è¿éæ们ä¸æå¡ç¨å ¨å±åéï¼èå°½å¯è½çç¨å±é¨åéï¼åå¦å¿ é¡»ç¨å°å ¨å±åéï¼æ们å¯ä»¥å°è¿ä¸ªå ¨å±åéå¨ç±»ï¼æ¯å¦TFormï¼çæååºå声ææå®ä¹ã对äºå±é¨åéæ们ååºå¤å å°å¿ï¼å°¤å ¶æ¯å®å¨å®ä¹æ¶ä¸åå ¨å±åéä¸æ ·è¢«åå§åï¼å¨ç¨åºä¸ä¸æ³¨æåä¼éè巨大çé£é©ï¼å æ¤å¨ä½¿ç¨å±é¨åéæ¶ï¼ä¸å®è¦å åå§ååå使ç¨ï¼