我开始使用Overbyte组件,曾经使用过Indy但是阻塞问题让我找了别的东西,所以我找到了ICS,但在这个例子中代码:
它为列表框中的每个链接创建新的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中并检查重复并删除它们。
还有别的办法吗。谢谢
答案 0 :(得分:1)
您可以在添加之前检查它是否已存在:
if something then
if ListBox1.Items.IndexOf(AHttpCli.URL) = -1 then
ListBox1.items.add(AHttpCli.URL);