大家能否提供一个比较好的解决方案,我这里有是有一个,但是数据类型不一样不知怎样才行
type
  userarray=array of string;
...
{$R *.dfm}
function tform1.split(s:string;dot:char):userarray;
    var
     str:userarray;
     i,j:integer;
    begin
       i:=1;
       j:=0;
       setlength(str, 255);
       while pos(dot, s) > 0 do
       begin
        str[j]:=copy(s,i,pos(dot,s)-i);
        i:=pos(dot,s)+1;
        s[i-1] := chr(ord(dot)+1);
        j:=j+1;
       end;
       str[j]:=copy(s,i,strlen(pchar(s))-i+1);
       end;procedure TForm1.Button1Click(Sender: TObject);
var
a:userarray;
begin
a:=split(memo1.text,',');//这里就没有办法编译过了,因为数据类型不同memo1.text是字符
                           型,而a是数组型,又没法转换
showmessage(a);//这里测试结果和传送的方式就更加的不行了,因为也要求是字符型,
end;end.

解决方案 »

  1.   

    楼主的代码有问题
    1。打算返回局部变量
    2。Function连Result都没有,所以连局部变量都没返回
    3。测试结果的时候明明知道是数组还不用数组的方式使用这样用
    type
      userarray=array of string;
    procedure split(s: string; dot:char; var res: userarray);
    var
     i,j:integer;
    begin
       i:=1;
       j:=0;
       setlength(res, 1);
       while pos(dot, s) > 0 do
       begin
        res[j]:=copy(s,i,pos(dot,s)-i);
        i:=pos(dot,s)+1;
        s[i-1] := chr(ord(dot)+1);
        j:=j+1;
        setlength(res, Length(res) + 1);
       end;
       res[j]:=copy(s,i,strlen(pchar(s))-i+1);
    end;procedure TForm1.main2Click(Sender: TObject);
    var
      a: userarray;
      i: Integer;
    begin
      split(memo1.text, ',', a);//这里就没有办法编译过了,因为数据类型不同memo1.text是字符
      //                           型,而a是数组型,又没法转换
      for I := Low(a) to High(a) do
      begin
        showmessage(a[i]);//这里测试结果和传送的方式就更加的不行了,因为也要求是字符型,
      end;
    end;
      

  2.   

    TO
    postren(小虫) ( ) 信誉:117 当字符串有一些特别字时,会乱了的.
      

  3.   

    Memo1.Lines.Delimiter := ',';
    Memo1.Lines.DelimitedText := Memo1.Text;
      

  4.   

    我现在是取到值了,但是只能取到最后一个数的值,而且是第二次OK之后才有如:135,136,256,289,只显示289,前面的就取不到了并进入死循环
    procedure TForm1.Button1Click(Sender: TObject);
    var
    str:userarray;
    i:integer;
    begin
    i:=1;
    setlength(str, 255);
    str[i]:=split(edit1.Text,',');
    for i:=0 to length(str) do//这样的作,就进入了死循环,我只想按顺序取出值,不知错在那
    showmessage(str[i]);
    next;
    end;end.