我写了一个关于字符串截取的函数,功能要求:对于一个String,其中发现有空格,则将其截为两个String。
代码如下:
function StringCut(Str : String;Num : integer): String;
var
Str1,Str2,StrAll : String;
i : integer;
begin
StrAll := Trim(Str);
For i := 0 to Length(StrAll) - 1 do
begin
if (Ord(StrAll[i]) = 32) then
begin
case Num of
1 : begin
Str1 := LeftStr(StrAll, i-1);
Result := Str1;
end;
2 : begin
Str2 := RightStr(StrAll,Length(StrAll)-i);
Result := Str2;
end;
else ;
end;
end;
end;
end;
但是在调用该函数关闭Form的时候,会出现EInvalidPointer异常,我不晓得是哪里Pointer出的错误,还请各位大侠们指点!
代码如下:
function StringCut(Str : String;Num : integer): String;
var
Str1,Str2,StrAll : String;
i : integer;
begin
StrAll := Trim(Str);
For i := 0 to Length(StrAll) - 1 do
begin
if (Ord(StrAll[i]) = 32) then
begin
case Num of
1 : begin
Str1 := LeftStr(StrAll, i-1);
Result := Str1;
end;
2 : begin
Str2 := RightStr(StrAll,Length(StrAll)-i);
Result := Str2;
end;
else ;
end;
end;
end;
end;
但是在调用该函数关闭Form的时候,会出现EInvalidPointer异常,我不晓得是哪里Pointer出的错误,还请各位大侠们指点!
改為:
For i := 1 to Length(StrAll) do
你的分解效率不高,你可以使用POS函数,如果是D7还可以使用POSEX函数.
result:=ifthen(Num = 1, Left(StrAll, pos(' ', StrAll), RightStr(StrAll, Length(StrAll)-pos(' ', StrAll)-1))