Пример кода OverbyteICS HTTPAsync: Как удалить дублирующиеся URL из списка? - PullRequest
0 голосов
/ 11 февраля 2012

Я начал использовать компоненты 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 Ответ

1 голос
/ 11 февраля 2012

Перед добавлением вы можете проверить, существует ли он уже:

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