变量定义如下:type TItems = array of string[MaxItemCharacterLen];
var c_set:TList;........var pure_item:TItems;
..........
mySet:=candidate.myList.Items[i]; //mySet类型你们可以不管setlength(pure_item,mySet.getLen);pure_item:=myset.getItem;//在这儿我把pure_item的值也show出来了,一切正常c_Set.Add(pure_item);//在这儿调试的时候可以看见pure_item的值为项添加的值,添加后可以看见c_Set.count值已经累加了的.............下面有如下函数把c_Set值变为字符串:function listtostr(myList:TList):string;var temp:TItems;i,j:integer;re:string;beginre:='';for i:=0 to mylist.Count-1 dobegintemp:=myList[i];for j:=low(temp) to high(temp) dore:=re+temp[j]; //这儿temp[j]的值皆为空,为什么re:=re+'|';end;result:=re;end;..........................在另一个函数中有如下调用:showMessage(listtostr(c_set));......................
可是show出来的类容是 | | | | | |....没有具体内容,请问why?

解决方案 »

  1.   

    我已经没语言了,有进来看过得up以下啊
    我就很感激了,up有分~谢谢~
      

  2.   

    tList只保存指针,这是根本问题
    其实你可以考考虑不用tlist,而用
    myList:Array of TItems就行了
      

  3.   

    TList保存的是指针。这里你保存的是pure_item,pure_item可能是你的函数内部变量,函数返回就会释放掉。你可以考虑这样:
    type
        PTItems=^TItems;
       .....
    var    
        pure_item:PTItems;
        ......
    begin
        ....
        new(pure_item);
        .....
        c_Set.Add(pure_item);