1、一个控制台程序
program Greeting;
{$APPTYPE CONSOLE}
var MyMessage:string;
vegin
MyMessage := 'Hello World!';
Writeln(MyMessage);
end.
Save to GREETING.PAS or GREETING.DPR
win DCC32 Greeting
linux dcc Greeting
2、Unit框架和语法
unit Unit1;
Interface
uses
implementation
uses
initialization
finalization
end.
3、uses顺序产生的问题
该顺序决定了initialization部分的程序代码执行的顺序,finalization则和initialization相反。如果两个单元有同名对象,则起作用的是Uses中比较后面一个。
4、符号
(. 相当于[
.) 相当于]
(* 相当于{
*) 相当于}
%,?,/,!,”,_,|,~并非特殊符号
@var 表示变量var的地址
P^表示指针取值
{$B+}完整演算{$B-}快捷演算(默认)
如果操作数包含变量则总是完整演算
Compiler Option->complete Boolean Evaluation为该选项
暗示指示符
platform 指示平台
deprecated 指示陈旧
library 依赖特殊库文件或者组件
5、语法点
Lable aaa;
Goto aaa;
if exp1 then
if exp2 then
s1
else
s2;
相当于
if exp1 then
begin
if exp2 then
s1
else
s2
end;
6、数据类型
序数
ord 顺序pred 前驱succ 后续inc 增加dec 减少
枚举
type size=(small=5,medium=10,large=small+medium);//size包括了5~15共11个值 array[size] of char有11个数
type SomeEnum=(e1,e2,e3=1);//ord(e1)=0 ord(e2)=1 ord(e3)=1,没有赋值的序数都大于排在他前面的值
压缩的数据存储
type Tmunbers = packed array[1..100] of real;
packed会影响速度,对字节数组会影响兼容性
集合
属于结构化类型,定义在序数类型基础上
type TASet = set of 1..250
记录
属于结构化类型
可变的record
type TEmployee = record
FirstName,LaseName:string[40];
case Salaried:boolean of
true:(AnnualSalary:currency);
false:(HourlyWage:currency);
end;
指针
^typeName 代表 指向typeName的指针 类型。
Pointer^ 代表pointer指向地址处的内容
指针相关函数new GetMem Addr Ptr
{$T+}@只能得到^T的指针
{$T-}无类型指针模式,所有指针兼容
标准的指针 system、SysUtils中
PAnsiString、PString
PByteArray
PCurrency、Pdouble、Pextended、Psingle
PInteger
POleVariant
PShortString
PtextBuf
PvarRec
Pvariant
PWideString
PwordArray
var
F:function(X:Integer):Integer;
Function SF(X:Integer):Integer;
F:=SF;//函数赋值
if F=SF then//比较结果
if @F=@SF then//比较过程
@F将F转换为无类型指针变量
@SF返回SF的地址