小于50个mdi子窗口,每个自窗口可能重名,可能不重名,把不重名的提到一个string数组,如下:
//找第一个自窗口
nMax:=-1;
  for i:=0 to 50 do
  begin
    if (WatchChild[i]<>nil) then
    begin
      sDif[0]:=WatchChild[i].Caption;
      nMax:=0;
      break;
    end;
  end;
  if nMax<0 then
    exit;
  //把不同名的放到sDif数组
  for i:=0 to 50 do
  begin
    if WatchChild[i]<>nil then
    begin
      //下面错了!!!!!!!
      if not (WatchChild[i].Caption in [sDif[0]..sDif[50]]) then         
      begin
        nMax := nMax + 1;
        sDif[nMax]:= WatchChild[i].Caption;
      end;
    end;
  end;
我该怎么解决。WatchChild[i].Caption 是中文的,有其他方法吗?

解决方案 »

  1.   

    用個TStringList,
    找到就Add進去!然後, 你的想找重復的, 就
     indexOf 就可解決你的
    >>我该怎么解决。WatchChild[i].Caption 是中文的,有其他方法吗?
      

  2.   

    不行就用循环判断呀。
    for i:=0 to 50 do
      begin
        if WatchChild[i]<>nil then
        begin
          for j:=0 to nMax do
          if WatchChild[i].Caption=sDif[j]  then 
          begin
             has:=true;        
             break;
          end;
          if not has then 
          begin
            nMax := nMax + 1;
            sDif[nMax]:= WatchChild[i].Caption;
          end;
          end;
        end;
      end;