在system单元中我们有Length专门用来获取字符串宽度和数组宽度,下面例子来介绍他的功能。
定义:
function Length( |
S: AStringType |
):;function Length( |
A: DynArrayType |
):; |
这里我们可以看到传递的参数可以是字符串,也可以是字符。
函数返回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:=''; i := length(s); WriteLn('string length:'+inttostr(i)); //short string ss:=''; 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.