Показать сообщение отдельно
  #5  
Старый 02.07.2025, 03:47
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Это ты где-то накосячил.
Про выход за пределы массива - я ж не зря использовал критическую секцию и в потоке, и в основном коде.

По поводу фильтрации.
Я бы фильтровал в основной программе, а код листенера оставил бы как есть, пусть выгребает все, а уж что отображать можно решить в основной программе. Например так:
Код:
procedure TForm1.ConnectionsMemo;
var
  i: Integer;
begin
  Memo1.Lines.Clear;
  for i := 0 to FThread.Count - 1 do
  begin
    if (Pos('127.0.0',FThread.IpTable[i].LocalAddr) <> 0) And
       (Pos('127.0.0',FThread.IpTable[i].RemoteAddr) <> 0) then
      Memo1.Lines.Add('Local: ' + FThread.IpTable[i].LocalAddr +  ' | Remote: ' + FThread.IpTable[i].RemoteAddr);
  end;
end;

В принципе, можно в потоке в массив сохранять не сроку, а "разобранный" адрес и тогда сравнивать уже целые значения.
Ответить с цитированием