當前位置:編程學習大全網 - 編程語言 - delphi的編程方法

delphi的編程方法

Delphi的編程語言是以Pascal為基礎的。Pascal語言具有可讀性好、編寫容易的特點,這使得它很適合作為基礎的開發語言。同時,使用編譯器創建的應用程序只生成單個可執行文件(.EXE),正是這種結合,使得Pascal成為Delphi這種先進開發環境的編程語言。

本章中,將討論ObjectPascal的主要特點,並講解如何在事件處理過程和其他應用程序中,使用它來編制程序代碼。本章將講解Delphi應用程序中最常用的ObjectPascal語法,而不是Pascal語言的壹切細節。如果您完全不熟悉Pascal編程,請參閱壹些基礎的Pascal教程。如果您具有編程經驗,並能熟練地使用其他流行程序語言,您將在本章的ObjectPascal中發現壹些相同的概念。如果您已經熟悉了BorlandPascal,就可以快速瀏覽或跳過本章。

編寫ObjectPascal程序代碼

在前邊的章節中,通過例程,已經編寫了幾行簡單的代碼。在本章中,將從熟悉Pascal編程的角度,配合實例,講解ObjectPascal編程的基該方法。

在編寫自己的ObjectPascal程序時,要註意程序的可讀性。Pascal語言是英式結構語言,在程序中選擇合適的縮排、大小寫風格,並在需要時將程序代碼分行,會使得程序代碼能夠很容易地被自己和他人讀懂。壹般的程序員都有這樣的體驗:如果不給程序加上適當的註解,壹段時間後,自己也難以理清程序的流程。給程序及時地加上註釋是良好的編程習慣。Delphi的註釋需要加註在{}之間,編輯器會把它們處理成為空白。Delphi保留了BorlandPascal編輯器的風格,關鍵字采用黑體字,被註釋的部分會變暗,這使得編程風格良好,易讀易寫。 在事件處理過程中,最常用到的工作就是把壹個新值賦給壹個屬性或變量。在設計用戶界面時,可以使用ObjectInspector(ObjectInspector)來改變其屬性;但有時需要在程序執行時改變屬性的值,而且有些屬性只能在執行時改變,這些屬性在Delphi的在線幫助的“Proprety”主題中被標為執行期屬性。進行這種改變,就必須使用賦值語句。

下文的賦值語句表征壹個OnClick事件。當按鈕按動後,將編輯框部件Edit1的Color屬性置為clRed:

procedureTForm1.Button1Click(Sender:TObject);

begin

Edit1.Color:=clRed;

end;

當按動按鈕後賦值語句被執行,編輯框變成紅色。

在語句中,部件的名稱在屬性前,中間用“.”表示屬性的所屬關系。這樣就準確地指定了要將clRed值賦給哪壹部件的哪壹屬性。賦值號為“:=”,不論給屬性還是給變量賦值,都是將右邊的值賦給左邊的屬性或變量。

當將壹個屬性值、變量、常量或文本數據賦給屬性或變量時,所賦值的類型和接受此值的屬性或變量的類型應相同或兼容。壹個屬性或變量的類型定義了此屬性或變量的可能值集合,也定義了程序代碼可以執行的運算。在前邊的例程中,編輯框部件的Color屬性和clRed的類型都是TColor。可以在在線幫助中找到壹個屬性的類型;另外壹種方法是在ObjectInspector中選定該屬性值段,並按下F1鍵,則類型將在屬性說明的結尾處列出,例如Color屬性列出下邊的語句:

PropertyColor:TColor;

有些屬性是只讀(ReadOnly)的,它們只能被讀取,不能被改變。請查閱在線幫助,在Delphi中這些只讀屬性都有註解。

標識符的說明與使用

標識符是Delphi應用程序中壹些量的名稱,這些量包括變量(var)、常量(const)、類型(type)、過程(procedure)、方法(Method)及其他,ObjectPascal在應用標識符時,必須首先說明它們。ObjectPascal是強類型語言,它的編譯器可以檢查確保賦給變量或屬性的值是正確的類型,以便於您改正錯誤。因為ObjectPascal是編譯語言,所以Delphi的執行速度要比使用解釋語言快得多。在使用標識符前說明它們,可以減少程序錯誤並增加代碼的效率。

變量

變量是程序代碼中代表壹個內存地址的標識符,而此地址的內存內容在程序代碼執行時可以被改變。在使用變量前必須對它進行說明,即對它進行命名,並說明它的類型。在所有變量說明以前加上保留字var。變量說明左邊是變量的名稱,右邊則是該變量的類型,中間用(:)隔開。

var

Value,Sum:Integer;

Line:String;

在窗體中加入壹個名稱為Edit1的編輯框,再加入壹個名稱(屬性Name)為Add的按鈕部件,並建立如下的事件處理過程:

procedureTForm1.addClick(Sender:TObject);

var

X,Y:Integer;

begin

X:=100;

Y:=20;

Edit1.Text:=IntToStr(X+Y);

end;

在本例中,當按動ADD按鈕時,編輯框中顯示值120。在ObjectPascal中,必須確保變量或屬性被賦予類型相同或兼容的值。您可以嘗試將賦給X的值改為100.0,或去掉IntToStr函數,在編譯時會出現類型不匹配的錯誤,這也說明了ObjectPascal強類型語言的特點。 case語句適用於被判斷的變量或屬性是整形、字符型、枚舉型或子界型時(LongInt除外)。用case語句進行邏輯跳轉比編寫復雜的if語句容易閱讀,而且程序代碼整形較快。

下面的例程顯示壹個使用case語句的窗體:

建立如下的事件處理過程:

procedureTForm1.Button1Click(Sender:TObject);

var

Number:Integer;

begin

Number:=StrToInt(Edit1.Text);

caseNumberof

1,3,5,7,9:Label2.Caption:='奇數';

0,2,4,6,8:Label2.Caption:='偶數';

10..100:

begin

Label2.Caption:='在10到100之間';

Form1.Color:=clBlue;

end;

else

Label2.Caption:='大於100或為負數';

end;

end;

執行程序,當Edit1部件接受到壹個值,並按動“OK”按鈕觸發程序後,Number便被賦值為用戶輸入的數值。case語句根據Number的值判斷該執行哪壹條語句。象if語句壹樣。case語句也有可選擇的else部分。case語句以end結尾。 ObjectPascal的循環語句有三種:repeat、while和for語句。

repeat語句

repeat語句會重復執行壹行或壹段語句直到某壹狀態為真。語句以repeat開始,以until結束,其後跟隨被判斷的布爾表達式。參閱以下的例程:

i:=0;

repeat

i:=i+1;

Writeln(i);

until=10;

當此語句被執行時,窗體的下方會出現1到10的數字。布爾表達式i=10(註意,與其他語言不同的是,“=”是關系運算符,而不能進行賦值操作)直到repeat..until程序段的結尾才會被計算,這意味著repeat語句至少會被執行壹次。 while語句和repeat語句的不同之處是,它的布爾表達式在循環的開頭進行判斷。while保留字後面必須跟壹個布爾表達式。如果該表達式的結果為真,循環被執行,否則會退出循環,執行while語句後面的程序。

下面的例程達到和上面的repeat例程達到同樣的效果:

i:=0;

whilei0then

test2(A);{經前置說明,調用未執行的過程Test2}

writeln(A);

end;

procedureTest2(varA:Integer);{經前置說明的Test2的執行部分}

begin

A:=Adiv2;

ifA>0rhen

test1(A);{在Test2中調用已執行的過程Test1}

end;

procedureTForm1.Button1Click(Sender:TObject);

begin

Alpha:=15;{給Alpha賦初值}

Test1(Alpha);{第壹次調用Test1,遞歸開始}

end;

按鈕的OnClick事件處理過程給Alpha賦初值,並實現先減1再除2的循環遞歸調用,直到Alpha小於0為止。

  • 上一篇:吃雞對電腦配置要求高嗎,知乎?
  • 下一篇:LED輪廓燈和LED全彩管的區別在哪裏?
  • copyright 2024編程學習大全網