在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.