参考SysUtils单元,自己试了一试写一个lowercase函数。
还是delphi里的函数比较高效。
function lower(const s:string):string;
var
i,len:integer;
P:pchar;
ch:char;
begin
len:=length(s);
setlength(result,len);//必须为result声明一个内存空间,否则p^:=ch;将会报错。因为没有存储的地方
p:=pchar(result);//很巧的地方,只要指针顺序为每个空间存储新内容就可以。
for i:=1 to len do
begin
ch:=s[i];//如果不引进一个char类型,则无法使用下面的inc(ch,32),只能使用char(ord(s[i])+32);
if (ch>='A') and (ch<='Z') then
inc(ch,32);
p^:=ch;
inc(p);
end;
end;
var
i,len:integer;
P:pchar;
ch:char;
begin
len:=length(s);
setlength(result,len);//必须为result声明一个内存空间,否则p^:=ch;将会报错。因为没有存储的地方
p:=pchar(result);//很巧的地方,只要指针顺序为每个空间存储新内容就可以。
for i:=1 to len do
begin
ch:=s[i];//如果不引进一个char类型,则无法使用下面的inc(ch,32),只能使用char(ord(s[i])+32);
if (ch>='A') and (ch<='Z') then
inc(ch,32);
p^:=ch;
inc(p);
end;
end;
总结:
不能直接为指针赋值,必须要为其声明一个空间。
可以:p:=stralloc(len);或者setlength(s,len);p:=pointer(s);顺带与一个变量“挂钩”。