Overbyte ICS HTTP异步示例代码:如何从列表框中删除重复的URL?

时间:2012-02-10 22:13:40

标签: http delphi-7

我开始使用Overbyte组件,曾经使用过Indy但是阻塞问题让我找了别的东西,所以我找到了ICS,但在这个例子中代码:

HTTPAsync

它为列表框中的每个链接创建新的HTTPCli组件,但是当我稍微改变代码时:

procedure THttpAsyForm.HttpCli1DocData(Sender: TObject; Buffer: Pointer;
  Len: Integer);
var
    AHttpCli : THttpCli;
begin
    if not DataCheckBox.Checked then
        Exit;

    AHttpCli := Sender as THttpCli;
    { Display a message stating that data is available }
    DisplayMemo.Lines.Add('Item ' + IntToStr(AHttpCli.Tag) + ' Data');

    { We could display the data, but it use a huge space in the display }
     DisplayMemo.Lines.Add(StrPas(Buffer));
  if something then   <--- CODE I ADDED       
  ListBox1.items.add(AHttpCli.URL); <--- CODE I ADDED 

    { We could also store the data somewhere (with the help of OnDocBegin }
    { and OnDocEnd events. Or using the RcvdStream property.              }
end;

当我输入10个链接时,它有时会向列表框添加重复项,或者通过一个链接向列表框添加两个相同的链接。 如何修复它不显示重复。我的想法是把它放在tstringlist中并检查重复并删除它们。

还有别的办法吗。谢谢

1 个答案:

答案 0 :(得分:1)

您可以在添加之前检查它是否已存在:

if something then
  if ListBox1.Items.IndexOf(AHttpCli.URL) = -1 then
    ListBox1.items.add(AHttpCli.URL);