Delphi APP 開發入門(六)Object Pascal 語法初探

閲讀次數:3442 發表時間:2014/06/10

Delphi APP 開發入門(五)GPS 定位功能 << 前情

經過前面五週幾乎每週可以寫出一個簡單App後,大家都可以感受到Delphi強大的開發威力!這個禮拜要很快速的教大家Delphi的核心語言「Object Pascal」,當然因為這系列的文章是「Delphi APP 開發入門」,所以不會著墨太多語法的部份(一方面是怕大家很快就嚇跑了),筆者還是希望能擺在對入門有興趣為重心。接下來就教導大家最常見的變數、常數宣告、資料型態的種類、結構型態的宣告以及流程控制等基本語法,其他的部份就留待實戰時再一一解說了。

程式註解

單行註解使用的是雙反斜線 //,多行註解使用的是 { }

// 這是單行註解
{1
2
3
這是多行註解
4
5 }

常數、變數

Object Pascal宣告變數的關鍵字是使用var,例如建立一個 i1的變數,型態是Integer整數的話。

var
i1 : Integer ;

如果同時宣告i1,i2都是整數時,可以用,隔開

var
i1,i2 : Integer;

而常數的關鍵字則是Const,我們建立一個 pi的變數,型態是Double,值為3.14159

Const
pi : Double = 3.14159 ;

型態種類

Object Pascal的型態種類繁多,甚至因為支援多種平台還有支援各平台的型態。我們僅先列出最常用的資料型態給大家參考,如果對完整的資料型態有興趣,可以參考Embarcadero Variant Type這一章節
基本的資料型態如下:

var
i: Integer; // 整數
s: String; // 字串
c: Char; // 字元
d: Double; // 浮點數
b: Boolean; // 布林

結構型態宣告

結構型態的宣告是由程式設計師自訂之資料型態。例如宣告一個員工記錄

type
TEmployee = Record
Name : String ; // 員工姓名
Addr : String ; // 員工地址
Hour : Double ; // 上班時數
Employed : Boolean; // 在職與否
end;

或是宣告一個1到100的整數陣列

Type
TMyArray = array [1..100] of integer;

流程控制

if流程

if流程控制大概是所有程式語言中最常用的判斷語法,在Delphi中的用法如下

  // 用法1(單一判斷)
if Z > B then
s := 'Z大於B';
// 用法2(多重判斷)
if Z > B then
s := 'Z大於B' // 注意這邊不用 ;
else if Z B then begin
s := 'Z大於B'; // 注意這邊要用 ;
end else if Z < B then begin
s := 'Z小於B'; // 注意這邊要用 ;
end else begin
s := "Z等於B";
end;

For迴圈

for是一個明確執行次數的迴圈,可以升冪或降冪執行

  // 由1執行到10
for i:= 1 to 10 do begin
sum:= sum + i;
end;
  // 由10執行到1
for i:= 10 downto 1 do begin
sum:= sum + i;
end;

While迴圈

for與while最大的不同在於for有明確執行次數,但while則是依照條件判斷是否要執行,以剛才的1加到10為例。

  While i<=10 do begin
sum := sum + i;
i := i +1;
end;

repeat迴圈

while與repeat都是條件式迴圈,而二者不同是while是先判斷再執行,repeat是先執行再判斷。

  repeat
sum:=sum+i;
i:=i+1;
until i>10;

Case多選一

如果你的判斷是要多選一的話,可以使用case of的語法

  case iMonth of
2,3,4:
Showmessage('春季');
5..7:
Showmessage('夏季');
8..10:
Showmessage('秋季');
11..12,1:
Showmessage('冬季');
else
Showmessage('月份有誤');
end;

程序與函數

程序(procedure)與函數(function)的不同在於有無傳回值。

  var
name : String;
procedure TForm1.hello1(s: String);
begin
name := 'hello ' + s; // 如果需要傳遞值需在外部宣告變數
end; function TForm1.hello2(s: String): String;
begin
result := 'hello ' + s; // 回傳字串型態變數
end; procedure TForm1.Button1Click(Sender: TObject);
var
s:String;
begin
s:= '';
hello1('codedata'); // 直接呼叫procedure
showmessage(name);
s:= hello2('codedata'); // 需要建立變數接回傳值
showmessage(s);
end;

本週是用最簡單的方式告訴讀者們Delphi的基本語法,如果大家對於Delphi語法有興趣深入的話,可以參考免費Embarcadero的官方文件。當然筆者在後續的教學中,如果有使用未提過的語法或使用,也會在文中做說明。

後續 >> Delphi APP 開發入門(七)通知與雲端推播

Delphi APP 開發入門(六)Object Pascal 語法初探的更多相关文章

  1. Delphi APP 開發入門(五)GPS 定位功能

    Delphi APP 開發入門(五)GPS 定位功能 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀次數 ...

  2. Delphi APP 開發入門(七)通知與雲端推播

    Delphi APP 開發入門(七)通知與雲端推播 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀次數: ...

  3. Delphi APP 開發入門(十)REST Client 開發

    Delphi APP 開發入門(十)REST Client 開發 分享: Share on facebookShare on twitterShare on google_plusone_share ...

  4. Delphi APP 開發入門(八)SQLite資料庫

    Delphi APP 開發入門(八)SQLite資料庫 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀次 ...

  5. Delphi APP 開發入門(四)簡易手電筒

    Delphi APP 開發入門(四)簡易手電筒 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀次數:32 ...

  6. Delphi APP 開發入門(九)拍照與分享

    Delphi APP 開發入門(九)拍照與分享 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀次數:30 ...

  7. Delphi APP 開發入門(三)簡易計算機

    Delphi APP 開發入門(三)簡易計算機 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀次數:68 ...

  8. Delphi APP 開發入門(二)Android/iOS設定,Hello World

    Delphi APP 開發入門(二)Android/iOS設定,Hello World 分享: Share on facebookShare on twitterShare on google_plu ...

  9. Delphi APP 開發入門(一)重生的 Delphi

    Delphi APP 開發入門(一)重生的 Delphi 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀 ...

随机推荐

  1. 股票指数kdj,sar,macd

    http://blog.eastmoney.com/gulingqianketong2011/blog_120832611.html http://blog.sina.com.cn/s/blog_a3 ...

  2. VS2008 对话框编辑器“即时预览”

    之前在VS2008中利用资源编辑器修改完对话框资源后,总是重新编译一下,然后Ctrl+F5运行来预览修改的效果,不断修改,不断编译,导致很费时,效率低下. 今天,发现了一个很好用的功能“Test Di ...

  3. 使用 Estimator 构建卷积神经网络

    来源于:https://tensorflow.google.cn/tutorials/estimators/cnn 强烈建议前往学习 tf.layers 模块提供一个可用于轻松构建神经网络的高级 AP ...

  4. JSP状态管理 及 Cookie实例

    HTTP协议的无状态性 无状态是指,当浏览器发送请求给服务器的时候,服务器响应客户端的请求. 但是当同一个浏览器再次发送请求给了服务器的时候,服务器并不知道它就是刚才那个浏览器. 简单地说,就是服务器 ...

  5. POI读写大数据量EXCEL

    另一篇文章http://www.cnblogs.com/tootwo2/p/8120053.html里面有xml的一些解释. 大数据量的excel一般都是.xlsx格式的,网上使用POI读写的例子比较 ...

  6. Javascript实现图片的预加载的完整实现

    图片预加载是web开发中一种应用相当广泛的技术,比如我们在做图片翻转显示等特效的时候,为了让图片在转换的时候不出现等待,我们最好是先让图片下载到本地,然后在继续执行后续的操作.今天我们将来实现一个完整 ...

  7. 常问面试题:C++中sizeof的陷阱及应答

    C++中sizeof是经常被问到的一个概念,比如,下面的几个关于sizeof的面试题反复出现在各大IT公司的技术面试当中,我们有必要完全理解并掌握.注:在曾经面试大公司时,我的确被问到过这样的问题. ...

  8. 给vmware虚拟机设置Ip,使用xshell远程连接Centos

    参考下面两位的分享才弄好,发表之前先对原作者表示感谢! 给Centos配置网络以及使用xshell远程连接Centos http://www.cnblogs.com/fuly550871915/p/4 ...

  9. Java操作文件转码

    package downloadTest; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.F ...

  10. Python全栈day18(三元运算,列表解析,生成器表达式)

    一,什么是生成器 可以理解为一种数据类型,这种数据类型自动实现了迭代器协议(其他数据类型需要调用自己内置的__iter__方法),所以生成器是可迭代对象. 二,生成器分类在python中的表现形式 1 ...