Delphi_03_Delphi_Object_Pascal_基本语法_01
这次是一个基本语法的第一部分,包括变量、变量初始化、常量、运算符、字符串等内容。
{
        本程序演示 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 := ;
    nAddFactor := ;
    if nAdd = nAddFactor then
    begin
        writeln('Equal.');
    end;
    //比较运算符  <> 不等于运算符, 如果不相等则返回TRUE
    if nAdd <> nAddFactor then
    begin
        writeln('Not Equal.');
    end;
    //逻辑运算符  and 与 ,注意Delphi中逻辑运算符的优先级要高于比较运算符
    if ( = nAdd) and ( <> nAddFactor )then
    begin
        writeln('The judge is ture.');
    end;
    //逻辑或   or  非 , 注意Delphi中逻辑运算符的优先级要高于比较运算符
    if ( = nAdd) or ( <> nAddFactor )then
    begin
        writeln('The judge is ture.');
    end;
    //逻辑非  not 非, 注意Delphi中逻辑运算符的优先级要高于比较运算符
    if not ( = nAdd) then
    begin
        writeln('1 is not equal nAdd.');
    end;
    {       数学运算符
    1、数学运算符基本与C语言类似,但是有几个特殊的需要说明一下
    2、mod  求模运算符
    3、div  整数除法, 得到的结果是整数
    4、/    浮点数除法,得到的结果是浮点数
    }
    writeln('整数除法 3 div 2 的结果是:');
    writeln( div );
    writeln('浮点数除法 3 / 2 的结果是:');
    writeln( / );
    writeln('求余数 3 mod 2 的结果是:');
    writeln( mod );
    {       按位运算符
    1、Delphi也提供了按位运算的运算符
    2、and  按位与
    3、or   按位或
    4、not  按位非
    5、xor  按位异或
    6、shl  按位左移
    7、shr  按位右移
    }
    writeln('2 and 5 按位与的结果是:');
    writeln( and );
    writeln('2 or 5 按位或的结果是:');
    writeln( or );
    writeln('not 2 按位非的结果是:');
    writeln(not );
    writeln('2 xor 5 按位异或的结果是:');
    writeln( xor );
    writeln('2 shl 5 按位左移的结果是:');
    writeln( shl );
    writeln('2 shr 5 按位右移的结果是:');
    writeln( shr );
    {       增量运算符
    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
    、数值型数据类型不做过多的介绍
    *)
    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,);
    noInitString := 'a' ;
    //当进行 + 连接字符串运算时,系统会自动分配足够的内存
    noInitString := noInitString + ' apple';
    writeln(noInitString);
    {       ansistring与 Win32 接口具有兼容性
    1、因为 ansistring 是以 NULL 结束的字符串,因此可以与Win32字符串兼容
    }
    SetLength(dirString,);
    //SysAllocStringLen(dirWideString,256);
    //获取windows目录
    //GetWindowsDirectory(PWideChar(dirWideString),256);
    dirString := dirWideString;
    writeln(dirString);
    readln;
end.
欢迎转载,转载请注明来源。
Delphi_03_Delphi_Object_Pascal_基本语法_01的更多相关文章
- python_基本语法_01
		离毕业工作还有几个月,本来想早点去公司实习,无奈gb学校不给放.好吧,既然这样,就学门语言. 参考与 http://www.cnblogs.com/vamei ,我是跟着这位博客牛人的博客教程学的,具 ... 
- 数往知来 SQL SERVER 基本语法<七>
		sqlserver学习_01 启动数据库 开始->cmd->进入控制台 sqlcmd->-S .\sqlexpress 1> 如果出现表示数据库"sqle ... 
- Java基础知识二次学习-- 第二章 基础语法与递归补充
		第二章 基础语法与递归补充 时间:2017年4月24日10:39:18 章节:02章_01节,02章_02节 视频长度:49:21 + 15:45 内容:标识符,关键字与数据类型 心得:由字母,下 ... 
- 我的MYSQL学习心得(一) 简单语法
		我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ... 
- Swift与C#的基础语法比较
		背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ... 
- 探索C#之6.0语法糖剖析
		阅读目录: 自动属性默认初始化 自动只读属性默认初始化 表达式为主体的函数 表达式为主体的属性(赋值) 静态类导入 Null条件运算符 字符串格式化 索引初始化 异常过滤器when catch和fin ... 
- [C#] 回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性
		回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性 序 目前最新的版本是 C# 7.0,VS 的最新版本为 Visual Studio 2017 RC,两者都尚未进入正式阶段.C# 6.0 ... 
- Velocity初探小结--velocity使用语法详解
		做java开发的朋友一般对JSP是比较熟悉的,大部分人第一次学习开发View层都是使用JSP来进行页面渲染的,我们都知道JSP是可以嵌入java代码的,在远古时代,java程序员甚至在一个jsp页面上 ... 
- node.js学习(二)--Node.js控制台(REPL)&&Node.js的基础和语法
		1.1.2 Node.js控制台(REPL) Node.js也有自己的虚拟的运行环境:REPL. 我们可以使用它来执行任何的Node.js或者javascript代码.还可以引入模块和使用文件系统. ... 
随机推荐
- iOS UITableView 与 UITableViewController
			很多应用都会在界面中使用某种列表控件:用户可以选中.删除或重新排列列表中的项目.这些控件其实都是UITableView 对象,可以用来显示一组对象,例如,用户地址薄中的一组人名.项目地址. UITab ... 
- C# 给word文档添加水印
			和PDF一样,在word中,水印也分为图片水印和文本水印,给文档添加图片水印可以使文档变得更为美观,更具有吸引力.文本水印则可以保护文档,提醒别人该文档是受版权保护的,不能随意抄袭.前面我分享了如何给 ... 
- ESLint的使用笔记
			原文地址:https://csspod.com/getting-started-with-eslint/?utm_source=tuicool&utm_medium=referral 在团队协 ... 
- Atitit.研发管理如何避免公司破产倒闭的业务魔咒
			Atitit.如何避免公司破产倒闭的业务魔咒 1. 大型公司的衰落或者倒闭破产案例1 1.1. 摩托罗拉1 1.2. 诺基亚2 1.3. sun2 2. 为什么他们会倒闭?? 常见的一些倒闭元素2 2 ... 
- 使用四元数解决万向节锁(Gimbal Lock)问题
			问题 使用四元数可以解决万向节锁的问题,但是我在实际使用中出现问题:我设计了一个程序,显示一个三维物体,用户可以输入绕zyx三个轴进行旋转的指令,物体进行相应的转动. 由于用户输入的是绕三个轴旋转的角 ... 
- 在Ubuntu下安装ovs-dpdk
			在Ubuntu下安装ovs-dpdk 参考资料:https://software.intel.com/zh-cn/articles/using-open-vswitch-with-dpdk-on-ub ... 
- MVP初探
			什么是MVP MVP是一种UI的架构模式,是MVC的一种变体,适用于基于事件驱动的应用框架.MVP中的M和V分别对应了MVC中的Model和View,而P代替了Controller,而它更多地体现在了 ... 
- Mono 3.2.3 Socket功能迎来一稳定的版本
			由于兴趣自己业余时间一直在搞.net下面的通讯应用,mono的存在得以让.NET程序轻松运行在Linux之下.不过经过多尝试Socket相关功能在Mono下的表现并不理想.不管性能还是吞吐能力方面离我 ... 
- 警惕!高版本VS发布时预编译导致Mono中Razor找不到视图
			早前一段时间,一位朋友在Q群里面找到我,说它按照<Linux.NET学习手记>的操作,把一个ASP.NET MVC 4.0的项目部署到Mono之后出现Razor无法找到视图的现象.当时费了 ... 
- Linux学习日记-EF6的安装升级(三)
			在vs2013中使用EF是5的但是如果想使用 “来自数据库据的Code First” 这个生成模板就会发现 它会提示你EF的版本太低请升级 下面就是解决办法: 安装实体框架6 在工具菜单中,点击NuG ... 
