【问题标题】:insert data into stringlist after doing comparison比较后将数据插入字符串列表
【发布时间】:2011-01-07 03:29:13
【问题描述】:

嗨,我有字符串列表...在我的字符串列表中,如果 item_type 'remark' 和 gL_dept'' 将检查记录.. 如果 gl_dept 中的记录具有相同的值,例如 400,400,401.. 400 的值出现 2 次 所以只添加一次400然后它会进入下一个记录..但我的问题是 当我进行比较时,如果 lstDept.indexOf(sdept) -1 不去这个语句,但它会回到这个语句.. if (tblSODitemtype).. 如何将值添加到我的字符串列表中..

  lstDept := TStringList.Create;  
  tblSOD.DisableControls;  
  try       
    tblSOD.First;  
    while (not tblSOD.Eof) do begin  
      sDept := tblSODGL_DEPT.AsString;  
      if (tblSODITEM_TYPE.AsString <> 'REMARK') and  (tblSODGL_DEPT.AsString <> '' ) then begin  
         if lstDept.IndexOf(sDept) <> -1  then begin  
            lstDept.add(tblSODGL_DEPT.asstring);  
            tblSOD.Next;  
         end;    
      end;  
    end;  
  finally  
    tblSOD.EnableControls;  
    lstDept.Free;  
  end;  

【问题讨论】:

    标签: delphi


    【解决方案1】:

    我认为问题在于tblSOD.Next 函数调用的位置

    尝试更改此设置

    while (not tblSOD.Eof) do begin  
      sDept := tblSODGL_DEPT.AsString;  
      if (tblSODITEM_TYPE.AsString <> 'REMARK') and  (tblSODGL_DEPT.AsString <> '' ) then begin  
         if lstDept.IndexOf(sDept) <> -1  then begin  
            lstDept.add(tblSODGL_DEPT.asstring);  
            tblSOD.Next;  //Problem 
         end;    
      end;  
    end; 
    

    到这里

    while (not tblSOD.Eof) do begin  
      sDept := tblSODGL_DEPT.AsString;  
      if (tblSODITEM_TYPE.AsString <> 'REMARK') and  (sDept <> '' ) then begin
         if lstDept.IndexOf(sDept) <> -1  then 
            lstDept.add(sDept);                
      end;
      tblSOD.Next;  
    end; 
    

    【讨论】:

    • 此外,还有一些对 tblSODGL_DEPT.AsString 的额外调用,可以用 sDept 替换。
    猜你喜欢
    • 2017-09-09
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多