字符串的函数和过程

 Turbo Pascal提供了八个标准函数和标准过程,如下:

函数和过程名 功 能 说 明


1、copy(s,m,n) 取s中第m个字符开始的n个字符,若m大于s的长度,则返回空值;若m+n大于s 长度,则截断。
2、length(s) 求s的动态的长度 返回值为整数



3、pos(sub,s) 在s中找子串sub 返回值为sub在s中的位置,为byte型
4、insert(sour,s,m) 在s的第m个字符位置处插入子串sour 若返回串超过255,则截断
5、delete(s,m,n) 删除s中第m个字符开始的n个字符串, 若m大于s的长度,则不删除;否则,若m+n大于s的长度,则删除到结尾 



6、str(x[:w[:d]],s) 将整数或实数x转换成字符串s, w 和 d是整型表达式,意义同带字宽的write语句


7、val(s,x,code) 将字符串S 转换成整数或实数x;
   若S中有非法字符,则code存放非法字符在S中的下标;否则,code为零。code为整型

Val(S; var V; var Code: Integer)第一个参数是要转换的字符串,第二个参数存放转换后的数字,可以是整数或浮点数,第三个参数存放出错的字符索引值

 8、upcase(ch) 将字母ch转换成大写字母 若ch不为小写字母,则不转换

 

例:

    校队输入日期(标准英语日期,月/日/年)的正确性,若输入正确则以年,月,日的方式输出。

程序如下:

program  ex8_4

type

    TForm1=class(TForm)

    Function InputBox(Const  ACaption:String,APrompt,ADefault:String):String;

  //用于显示带有一个编辑框的对话框  (对话框标题,编辑框输入提示,编辑框中的缺省字符串)

private

    {Private  declarations}

public

    {Public  declarations}

    const

        max:arrary[1..12] of  byte=(31,29,31,30,31,30,31,31,30,31,30,31);

    var

        st:string;

        p,w,y,m,d:integer;

    procedure  err;

 

    procedure  init(var  x:integer);

 

    Function InputBox(Const  ACaption:String,APrompt,ADefault:String):String;

  //用于显示带有一个编辑框的对话框  (对话框标题,编辑框输入提示,编辑框中的缺省字符串)

 

end;

 

var

    Form1:TForm1;

implementation

    {$R*.DFM}

 

procedure  err;

begin

    write('Input  Error1‘);

    readln;

    halt;

  //halt会发生FormDestory事件,用于强行终止应用程序的执行,返回操作系统(非正常退出方式)。

delphi关闭程序 Close,application.Terminate与halt有什么区别

在有多个Form窗体时可以体现出来. 用close是只关闭本窗体,而用Application.terminate是关闭整个程序,包括所有窗体.

(1)当Close是一个主窗体时,程序会退出。Close会发生FormClose事件,FormCloseQuery事件。close,只是针对窗体。主窗体close以后程序就Application.Terminate了。子窗体close以后,没释放,还可以Show出来。也是说主窗口的Close方法其实也是调用Application的Terminate来终止程序的。

(2)Halt会发生FormDestory事件,,用于强行终止应用程序的执行,返回操作系统(非正常退出方式)。

(3)Application.Terminate以上三个事件都不会发生Application.Terminate就是程序结束了。整个程序结束运行,系统强行收回系统资源当主窗口关闭时或WM_QUIT消息触发时,Terminate自动被调用Application.

Close是正常退出,有应用程序主动交还系统资源另外有一个区别,主窗口的Close方法可以触发OnClose事件而Application.Terminate并不会触发该事件。

end;

 

Function InputBox(Const  ACaption:String,APrompt,ADefault:String):String;

var
    DateTime:TDateTime;
begin
    DateTime:=now;

    InputBox(’ 日期校队窗口','请在此输入日期:月/日/年', DateTime);

   

  

procedure  init(var  x:integer);

begin

       

    p:=pos('/',st);

    if  (p=0) or (p=1) or (p>3) then

    err;

    val(copy(st,1,p-1),x,w);

    if  w<>0 then

    err;

    delete(st,1,p);

end;

begin

    write('The  Date  is :');

    readln(st);

    init(m);

    init(d);

    val(st,y,w);

    if  not (length(st)<>4) or (w<>0) or (d>max) then err;

    if(m=2) and (d=29)  then

        if  (y  mod  100)=0  then

        begin

            if  (y  mod  400)<>0  then

            err;

        end;

    else  if  (y  mod  4)<>0  then

    err;

    write('Date:',y '.', m,'.',d);

    readln;

end;

 

分析:

1、判断输入的月和日应是1位或2位的数字,过程中用了一个过程 init ,利用串函数pos

    求的分隔符 / 所在的位置而判定输入的月和日是否为1位或2位,利用标准过程val判定

    输入的月和日是否为数字;

2、判定月和日是否规定的日期范围及输入的年月是否正确;

3、若输入的月是2月份,则还需考虑闰年的情况。

 

   

 

转载于:https://www.cnblogs.com/chenJazz/p/5718021.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值