在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
这次是一个基本语法的第一部分,包括变量、变量初始化、常量、运算符、字符串等内容。 { 本程序演示 Delphi Pascal 的基本语法 1、变量及变量的初始化 2、常量 3、运算符 3、 4、 } program Syntax; {$APPTYPE CONSOLE} uses SysUtils,Windows,StrUtils; { 变量 1、Delphi中变量必须在固定的地方进行定义 2、Delphi中通过关键字 var 来定义变量 3、语法格式为: var 变量名标识符列表 : 变量类型 ; 变量名列表中的各个变量名之间用逗号隔开 4、初始化格式为 var 变量名标识符列表 : 变量类型 = 初始化值; 5、注意三个符号的位置 冒号 等于号 和 分号 } var //第一种形式的变量定义 greetWord:string; //第二种形式的变量定义 nAdd,nAddFactor:integer; //变量的初始化 rad : single = 5.0 ; //宽字符字符串 chinaName:WideString; //ansichar 类型单字节字符串 englishName:AnsiString; //定义一个没有初始化的字符串 noInitString:string; //定义一个与win32兼容的字符串 dirWideString:widestring; dirString:ansistring; { 常量 1、Delphi中预定义了一部分常量 true Boolean 类型的true false Boolean 类型的false 2、在Delphi中利用 const 关键字定义常量 3、语法格式为 const 常量名标识符 : 常量的数据类型 = 初始化值。 4、初始化值必须有,常量的数据类型可以省略,Delphi会根据初始化值自动确定 常量的数据类型,进而分配相应的内存空间。 但是对于整数型的常量,内存 空间的分配遵循能容纳初始化值的最小空间数据类型确定。 例如: 10 会确定为 shortint类型 5、常量还有一种常量字面值,就是和C语言中一样的字面值,例如 10 整数常量 2.06 实数常量 'Hello world' 字符串常量 'a' 字符常量 } const pi:single=3.1415926; { 要点 1、Delphi中允许在定义变量和常量的时候使用编译期函数来初始化变量。 2、常见的编译期函数有: Sizeof() Ord() Chr() Trunc() Round() High() Low() 这里就不举例啦,一般不太会用到, } begin //赋值运算符 := greetWord := 'Hello, Wellcome to Delphi world!'; //比较运算符 = 判断是否相等 nAdd := 10; nAddFactor := 1; if nAdd = nAddFactor then begin writeln('Equal.'); end; //比较运算符 <> 不等于运算符, 如果不相等则返回TRUE if nAdd <> nAddFactor then begin writeln('Not Equal.'); end; //逻辑运算符 and 与 ,注意Delphi中逻辑运算符的优先级要高于比较运算符 if (1 = nAdd) and (2 <> nAddFactor )then begin writeln('The judge is ture.'); end; //逻辑或 or 非 , 注意Delphi中逻辑运算符的优先级要高于比较运算符 if (1 = nAdd) or (2 <> nAddFactor )then begin writeln('The judge is ture.'); end; //逻辑非 not 非, 注意Delphi中逻辑运算符的优先级要高于比较运算符 if not (1 = nAdd) then begin writeln('1 is not equal nAdd.'); end; { 数学运算符 1、数学运算符基本与C语言类似,但是有几个特殊的需要说明一下 2、mod 求模运算符 3、div 整数除法, 得到的结果是整数 4、/ 浮点数除法,得到的结果是浮点数 } writeln('整数除法 3 div 2 的结果是:'); writeln(3 div 2); writeln('浮点数除法 3 / 2 的结果是:'); writeln(3 / 2); writeln('求余数 3 mod 2 的结果是:'); writeln(3 mod 2); { 按位运算符 1、Delphi也提供了按位运算的运算符 2、and 按位与 3、or 按位或 4、not 按位非 5、xor 按位异或 6、shl 按位左移 7、shr 按位右移 } writeln('2 and 5 按位与的结果是:'); writeln(2 and 5); writeln('2 or 5 按位或的结果是:'); writeln(2 or 5); writeln('not 2 按位非的结果是:'); writeln(not 2); writeln('2 xor 5 按位异或的结果是:'); writeln(2 xor 5); writeln('2 shl 5 按位左移的结果是:'); writeln(2 shl 5); writeln('2 shr 5 按位右移的结果是:'); writeln(2 shr 5); { 增量运算符 1、inc 增加 2、dec 减小 3、有两种形式 inc(a); 得到的结果是 a := a + 1 inc(a, b); 得到的结果是 a := a + b } writeln('nAdd is:'); writeln(nAdd); writeln('Inc(nAdd) is:'); Inc(nAdd); writeln(nAdd); Dec(nAdd); writeln('Dec(nAdd) is:'); writeln(nAdd); { 数据类型 1、整数 8位、16位、32位有符号无符号整数,64位有符号整数 2、4位、6位、8位、10位浮点型,64位货币类型 3、1字节字符、2字节字符 4、定长字符串、变长字符串 5、NULL结尾字符串、NULL结尾宽字符串 6、动态两字节字符串 7、1字节、2字节、4字节boolean类型 } //ansichar 具有标准一字节大小 if sizeof(char)=sizeof(ansichar) then begin writeln('char and ansichar have the same size.'); end; //char 具有和widechar一样的有两字节大小 if sizeof(char)=sizeof(widechar) then begin writeln('char and widechar have the same size.'); end; { 字符串 1、shortstring 具有256字节长度的字符串,ansichar字符串 2、ansistring 顾名思义就是由 ansichar 构成的字符串 3、widestring 顾名思义就是由 widechar 构成的字符串 4、pchar 以NULL结尾的字符串的指针,兼容C语言的char* 5、pansichar 以NULL结尾的ansichar字符串指针 6、pwidechar 以NULL结尾的 widechar 字符串指针 7、默认情况下 string 定义的是 ansichar 类型 } (* 1、需要特别注意 {$H+} 和 {$H-} 编译开关对string类型的影响 {$H+} 则表示 string 为 ansichar {$H-} 则表示 string 为 shortchar 2、数值型数据类型不做过多的介绍 *) writeln(sizeof(shortstring)); //给宽字符字符串赋值 chinaName := '中国'; //给单字节字符串赋值 englishName := 'England'; writeln(chinaName); writeln(englishName); { ansistring的细节 1、string定义的时候没有分配内存 2、赋值或者初始化后string变量就分配内存 3、通过SetLength()函数可以申请内存 4、可以通过索引访问字符串 5、string类型具有垃圾自动回收机制,当生命周期结束后,由系统自动回收 系统分配给string的内存 6、字符串类型支持 + 连接运算 } // 下面的用法错误 //noInitString[0] := 'a'; // 但是利用下面的方法则是正确的,通过 SetLength() 函数申请内存空间。 SetLength(noInitString,1); noInitString := 'a' ; //当进行 + 连接字符串运算时,系统会自动分配足够的内存 noInitString := noInitString + ' apple'; writeln(noInitString); { ansistring与 Win32 接口具有兼容性 1、因为 ansistring 是以 NULL 结束的字符串,因此可以与Win32字符串兼容 } SetLength(dirString,256); //SysAllocStringLen(dirWideString,256); //获取windows目录 //GetWindowsDirectory(PWideChar(dirWideString),256); dirString := dirWideString; writeln(dirString); readln; end.
欢迎转载,转载请注明来源。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论