我写了一个关于字符串截取的函数,功能要求:对于一个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出的错误,还请各位大侠们指点!

解决方案 »

  1.   

    For i := 0 to Length(StrAll) - 1 do
    改為:
    For i := 1 to Length(StrAll) do
      

  2.   

    好象上面的代碼不會出EInvalidPointer 才對啊
      

  3.   

    ari说的不错,这错误是这个问题引起的吗??? -_-#
      

  4.   

    如果,你怀疑这句话出错,请把他注释掉,看看程序退出会不会出错,如果不出错,的却是这句话出错.
    你的分解效率不高,你可以使用POS函数,如果是D7还可以使用POSEX函数.
    result:=ifthen(Num = 1, Left(StrAll, pos(' ', StrAll), RightStr(StrAll, Length(StrAll)-pos(' ', StrAll)-1))