在system单元中我们有Length专门用来获取字符串宽度和数组宽度,下面例子来介绍他的功能。

定义:

function Length(

  S: AStringType

):Integer;

function Length(

  A: DynArrayType

):Integer;

这里我们可以看到传递的参数可以是字符串,也可以是字符。

函数返回S字符串的宽度,如果字符串是shortstring类型,字符宽度限制在255以内,如果S是空,则返回0.

widestrings和ansistrings也可以使用这个函数

如果是动态数组,函数将会返回数组元素的数量。

Length函数同样支持Pchar和PWideChar类型,效果类似StrLen和WStrLen,但这种情况,函数只计算null结尾的字符串,因为这里的函数是一个null结尾扫描结果的函数。

官方例子:

Program Example36;

{Program to demonstrate the Length function.}

Var S :String;
    I :Integer; begin
  S:='';
  for i:=1 to 10do
    begin
    S:=S+'*';
    Writeln(Length(S):2,' : ',s);
    end;
end.

下面是我们的例子:

program system_example;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes,sysutils; var
  s:string;
  i:Integer;
  ss:ShortString;
  sarr : string[10];
  anstr:AnsiString;
  wdstr:widestring;
  arr : array[0..10] of integer;
  darr : array of integer;
  marr : array[0..4,2..22] of integer;
begin
  //normal string
  s:='Lazarus';
  i := length(s);
  WriteLn('string length:'+inttostr(i));   //short string
  ss:='Lazarus';
  i := length(ss);
  WriteLn('shortstring length:'+inttostr(i));   // string array
  sarr:='Lazarus';
  i := length(sarr);
  WriteLn('string array length:'+inttostr(i));   // ansistring
  anstr :='我的lazarus';
  i := length(anstr);
  WriteLn('ansi string length:'+inttostr(i));   // widestring
  wdstr :='我的lazarus';
  i := length(wdstr);
  WriteLn('wide string length:'+inttostr(i));   //static array length
  i:= length(arr);
  WriteLn('array length:'+inttostr(i));{11}   // dynamic array
  setlength(darr,10);
  i:= length(darr);
  WriteLn('dynamic array length:'+inttostr(i));{10}   i:= length(marr);
  WriteLn('m array length:'+inttostr(i));{5}
end.

Lazarus中system.length说明的更多相关文章

  1. 分析Java中的length和length()

    在不适用任何带有自动补全功能的IDE的情况下,我们怎么获取一个数组的长度?如何获取字符串的长度? 这里我们先举用实例去分析一下:int[] arr=new int[3]:System.out.prin ...

  2. Java 中System里getProperty(something)

    Java 中System里getProperty 方法获得系统参数 Key Description of Associated Value 中文描述 java.version Java Runtime ...

  3. net中System.Security.Cryptography 命名空间 下的加密算法

    .net中System.Security.Cryptography命名空间 在.NETFramework出现之前,如果我们需要进行加密的话,我们只有各种较底层的技术可以选择,如 Microsoft C ...

  4. C#中System.Globalization.DateTimeFormatInfo.InvariantInfo怎么用

    原文  C#中System.Globalization.DateTimeFormatInfo.InvariantInfo怎么用 在开发的时候,碰到下面这样一个问题: 在程序中显示当前系统时间,但是有一 ...

  5. Java中System.getProperty()的参数

    Java中System.getProperty的使用方法: 1,System.getProperty返回的数值,比如java.version,java.home,os.name,user.home以及 ...

  6. python中print()函数的“,”与java中System.out.print()函数中的“+”

    python中的print()函数和java中的System.out.print()函数都有着打印字符串的功能. python中: print("hello,world!") 输出 ...

  7. Systemd初始化进程/RHEL 6系统中System V init命令与RHEL 7系统中systemctl命令的对比

    Linux操作系统的开机过程是这样的,即从BIOS开始,然后进入Boot Loader,再加载系统内核,然后内核进行初始化,最后启动初始化进程.初始化进程作为Linux系统的第一个进程,它需要完成Li ...

  8. webConfig中System.Web 和 System.WebServer节点读取

    webConfig中System.Web 和 System.WebServer节点读取根据应用程序池中托管管道模式有关. 在网站发布到服务器的IIS上时,应用程序池中托管管道模式分为经典和集成. Sy ...

  9. debug.js中的length的错误

    记得昨天报了一个错,debug.js文件中的length未定义.前台不定位代码,后天也不报错,而debug.js是框架封装的文件,不是自己写的,无从得知是哪里的问题,而项目也已经重新启动过,无法撤销. ...

随机推荐

  1. Azure Blob Storage从入门到精通

    今天推荐的是一个系列文章,让读者阅读完成后可以对Azure Blob Storage的开发有一个全面的了解,可谓是从入门到精通. Azure在最初的版本里面就提供了非结构化数据的存储服务,也即Blob ...

  2. 【HTML5】input类型

    * email <input type="email" name="user_email" /> * url <input type=&quo ...

  3. Making raycast ignore multiple layers

    I know how to make the raycast ignore a layer but I want it to ignore layers 9 and 10 but collide wi ...

  4. BZOJ3750 : [POI2015]Pieczęć

    枚举第一个位置,然后暴力检验. #include<cstdio> #define N 1010 int T,n,m,a,b,x,y,i,j,k,q[N*N][2],cnt;char s[N ...

  5. 响应式HTML5+CSS3 网站开发测试实践

    仅仅利用media query适配样式是远远不够的,并没有考虑触屏下的行为和特有的内容组织方式的不同.简单在桌面版基础上叠加mobile版的代码,会带来请求增多.流量.性能.代码冗余等诸多方面问题.有 ...

  6. TYVJ P1083 分糖果 Label:bfs

    描述 童年的我们,将和朋友分享美好的事物作为自己的快乐.这天,C小朋友得到了Plenty of candies,将要把这些糖果分给要好的朋友们.已知糖果从一个人传给另一个人需要1 秒的时间,同一个小朋 ...

  7. [Unity2D]预制件Prefab

    预制件Prefab是一个组件模板,比如在游戏里面要实现开枪的时候会有子弹不停地从枪口飞出来,那么就可以通过Prefab来实现子弹的游戏对象,表示所有的子弹都是从同一个Prefab来构建出来的,也可以理 ...

  8. Why NHibernate updates DB on commit of read-only transaction

    http://www.zvolkov.com/clog/2009/07/09/why-nhibernate-updates-db-on-commit-of-read-only-transaction/ ...

  9. JS URL传中文参数引发的乱码问题

    今天的项目中碰到了一个乱码问题,从JS里传URL到服务器,URL中有中文参数,服务器里读出的中文参数来的全是“?”,查了网上JS编码相关资料得以解决. 解决方法一: 1.在JS里对中文参数进行两次转码 ...

  10. 在openGL中绘制图形

    点的绘制.: glVertex*():星号表示函数要有后缀 该函数 需要放在glBegin函数和glEnd函数之间,glBegin函数的向量指定绘制图元的类型,而glEnd函数没有参数,例如: glB ...