类Pascal脚本编写指南[版]_pascal教程整理版
类Pascal脚本编写指南[版]由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“pascal教程整理版”。
类Pascal脚本编写指南
作为一名开发人员,或者技术人员,你可能认为编写程序是很重要的,更一般的看法可能是:软件开发就是编程。实际上,这是错误的,而且,通过使用giap平台进行二次开发,你会发现,大错特错。
在giap 平台上,你需要写的脚本少得可怜,因为大部分功能,你都可以通过若干个控件来实现。但是,把系统设计变成真正的系统,你又必须写脚本,虽然,它也偶尔需要技巧,在大多数时候,你只需要老老实实地按照设计好的数据流程来写一些脚本。毕竟,写脚本是必须的;而且,giap 平台使用的类 pascal 脚本还有一些特殊之处,我们很有必要对它进行介绍。
脚本是由一连串标记和分隔符组成。标记是指组成脚本的中最小且有意义的文字单位。分隔符是指空格和“.”、“;”、“=”、“(”、“)”、“:”、“:=”、“’”、“””等标点符号。脚本文件编译器遇到标记是按照 保留字,字段别名,组件名(组件的 name 属性),内部函数名,用户自定义函数名变量名,常量名 顺序依次解析的。接下来,我们将介绍如下内容: 保留字 常量
变量
运算符
语句(包括针对数据表字段的操作语句)
函数及过程
控件的动态使用 giap 内部函数介绍
一、保留字:
如果你学过任何一门编程语言,或者你的英语还可以,这些保留字对你都不是问题。Giap 中使用的保留字共15个:
if, then, else, var,do, to, downto,for, case, of, while,procedure, function, begin, end
二、常量:
常量包括数值常量、字符串常量、枚举常量。其中枚举值需要使用引号括起来。
三、变量:
giap平台中变量没有类型,而且,你也没有必要对变量进行声明,你可以直接使用。但有些问题需要注意,尤其是以前使用C语言的人:giap 平台上的标识符是不区分大小写的,就是说:标识符 form1 和Form1,fORm1,forM1 都是一样的,还应该注意的是:上面的 15 个保留字不能用做标识符。
四、运算符:
1、算术运算符
+,-, *, /(浮点),div(整除), mod(求余)
2、布尔变量运算符
and(逻辑与), or(逻辑或), not(逻辑非), xor(逻辑异或)
3、关系运算符
=, 等于,不等于比较。, = 大小比较
=(包含), in(属于)
4、逻辑运算符
and(逐位进行逻辑与运算), or(逐位进行逻辑或运算), not(逐位进行二进制求反), shl(二进制左移)shr(二进制右移)
5、字符运算符
+ 字符串连接
6、集合运算符
+ 集合并运算-集合差运算 * 集合交运算
五、语句:
语句包括简单语句和复合语句,简单语句如:editText := ‘you can edit it!’。复合语句是在 begin 和end 之间的若干条简单语句或者复合语句组成的。语句都以分号结束,语句后面是 end 的分号可以省略。
1、赋值:
使用 := ,如:editText :=‘you can edit it!’,字符串在 ‘’之间。
2、If 语句:
if 语句有两种,else 与 if 的结合遵守 就近原则。① if then
② if then else
③ case 语句: 格式如下:
case of : : : „„„„„„„ else: end 执行过程:(1)计算 的值。
(2)如果 的值与某个 的值相等,则执行相应的 ;否则,执行 else 后面的
④ For 循环语句:
For 循环语句也有两种。
(1)for := to do 执行过程:
a、给 赋初值
b、判断 的值是否小于等于,如果小于等于,则执行 ;否则退出循环。
c、将 的值增加 1,跳到(2)处继续执行。(2)for := downto do 执行过程:
a、给 赋初值
b、判断 的值是否大于等于,如果大于等于,则执行 ;否则退出循环。
c、将 的值减 1,跳到(2)处继续执行。
六、函数及过程:
函数和过程的区别是:函数有返回值,而过程没有返回值。函数和过程分为两种:giap 内部函数和用户自定义函数。Giap 内部函数我们以后介绍,下面介绍用户自定义函数和过程。
Function); Begin End 如:function FormMouseUp(Sender,Button,Shift,X,Y);
如果,该函数没有参数,那么 后面的 括号可以省略。把 Function 换成 Procedure 就可以得到过程。
七、控件的动态使用:(略)
八、Giap 内部函数介绍:
Giap 平台提供了一些预定义的函数和过程,使用起来非常方便。下面,我们逐一介绍,对于那些可以看出用法的,我们只是将其列出,不做讲解。
Function MeageBox(提示:String),标题:String; 对话框风格:Word=MB_OK+MB_ICONINFOMATION):integer;
procedure ErrorMsg(错误信息:string);
function SubStr(strSource:string, posStart:integer, iCount:integer):string; 功能:返回从字符串 strSource的第 posStart 个字符开始的含有 iCount 个字符的子串。如: SubStr(‘abcdefgh’, 2, 3)返回字符串 ‘bcd’
function GetSubStr(源串:string,分隔符:char,位置:integer):string;
function To_Char(数值:Variant):String;
function To_Number(字符串:String):Variant;
function VarIsClear(变量):Boolean; 功能:判断变量是否被清零
function VarIsNull(变量):Boolean; 功能:判断变量的值是否无效
function ES2HS(阿拉伯数字:Stirng):String;
功能:将阿拉伯数字转换成大写的汉字。如 1-----〉壹
function EDate2HDate(数字日期:String):String; 功能:参考ES2HS 函数
procedure DBSelect(主数据集:TDataset);
功能:选择数据集,通常和 SetFieldChar 一起使用。如:DBSelect(HXXXClientDataSet).选择户信息数据集作为当前工作区
procedure SetFieldChar(,位置:integer,值:char); 功能:设置 DBSelect 过程选定的数据集中某字段的值比如,上面的 DBSelect 函数选定了数据集 人口基本信息,则: SetFieldChar(‘人员属性’,2,1)把数据集人口基本信息 的当前记录的人员属性 字段的 第 2 位置为 1
function DBDetail(主数据集,'表别名'):TDataset;
功能:获取“主数据集”中的子表。如:DBDetail(HXXXClientDataSet,’人员基本信息’)获取户信息数据集中的子表“人员基本信息”的数据
function DBLocate(主数据集,'过滤字段名列表',[过滤值列表],'[TLocateOptions]'):boolean; 功能:根据过滤条件和定位选项,定位主数据集中的记录,其中 TlocateOptions 的值为集合[loCaseInsensitive,loPartialKey] 的一个子集。LoCaseInsensitive 的意思为不区分字母的大小写;loPartialKey 的意思为可以部分匹配,比如,查询条件是 ham,那么 ham, hhhamerd 都会匹配成功,下面是一个例子。DBLocate(HXXXClientDataSet, ‘姓名,性别’ [张三,男]); 最后一个参数是可选的
function DBLocate(过滤字段名列表,[过滤值列表],'[TLocateOptions]'):boolean; 功能:这个函数在当前的数据集(由 DBSelect 函数选定)中定位满足条件的记录,基本上和上一个DBLocate 相同
procedure DBClone(源数据集,目标数据集,'过滤表达式'); 功能:将源数据集中满足 过滤表达式的 记录拷贝到 目标数据集
function DBLookUp(过滤条件,返回字段名,主数据集):string 功能:在参数给定的数据集中,根据过滤条件,返回 所列出的字段的 值的字符串,如:DBLookUp(‘姓名=张三’, [性别,民族,出生日期],HXXXClientDataSet)
function DBLookUp(过滤条件,返回字段名):string;
功能:基本上和上一个函数相同,这个函数的参数众没有数据集 需要DBSelect 函数选定
procedure DBGridReplace(,'字段名列表',[替换值列表]); 功能:设置 DBGrid 中当前记录的 字段的值,如:DBGridReplace(DBGrid1, ‘姓名,性别’, [张三,男])
function DBReplace(DBGrid,'字段名列表',[替换值列表]):替换的记录数;
功能:设置 DBGrid 中所有记录的 字段的值,返回替换的记录数,如:DBGridReplace(DBGrid1, ‘姓名,性别’, [张三,男])
procedure DBExpReplace(要替换的主数据集,'过滤表达式','字段名列表',[替换值列表]);
功能:设置 参数给定的数据集中的满足过滤条件的记录的字段值
function DBReplace(要替换的主数据集,'过滤表达式','字段名列表',[替换值列表]):替换记录数; 功能:基本上和上一个过程相同,只是这个是函数,根据过滤条件表达式决定要替换的纪录,并返回替换的记录数
function DBGoto(DBGrid,Index):boolean;
功能:将 DBGrid 的当前记录定位到 索引为 Index 的记录处
function AFN2PFN('源串',是否带表名):string;
功能:将源串中指定的字段名转换成物理名返回,最后一个参数决定 源串 中是否带表名
funciton Date(是否是本地时间,['日期格式串']); 功能:返回日期,第一个参数为真时返回的是 本地时间,否则返回服务器时间。第二个参数决定返回日期的格式,如:Date(false, ‘yyyymmdd’)返回8 位服务器时间 形式为:20031212
function DBAllRecCount(主数据集):满足条件的记录数; 功能:返回数据集中记录的总数。
function SFZ18C(17位身份证):身份证的第18位;
功能:由 参数给定的 17 位身份证号码,生成并返回 身份证的第 18 位
function SFZVerify(15/18位身份证号,出生日期,性别):boolean;
功能:由于身份证号码中含有 出生日期,性别等信息,此函数验证 3 者之间是否存在矛盾
procedure Translate(是否翻译字段值:boolean);
function Ifthen(逻辑表达式,表达式1,表达式2):variant;
功能:如果 逻辑表达式 的值为真,返回 表达式1 的值,否则,返回 表达式2 的值
procedure ApplyUpdates(数据连接1[,数据连接2,...]:THTTPConnection); 功能:将数据集中的数据提交到数据库
function FieldName(字段对象:TField):字段别名;
功能:返回某个字段对象的 字段别名,数据集由DBSlelect函数选定
function Trim(字符串:string[,'Left'|'Right']):string;
功能:去掉 字符串中(1)第一个非空格字符左边(2)最后一个非空格字符右边(3)左右两边 的空格,如:Trim(‘dsf’,[Left]); 返回‘dsf’
function Pos(子串:string,源串:string):integer;
功能:返回子串在源串中的位置,返回的是 子串中第一个字符在源串中的位置