블로그 이미지
훅크선장

카테고리

분류 전체보기 (362)
사진이야기 (23)
펭귄컴퓨팅 (121)
컴퓨터보안 (84)
절름발이 프로그래머 (59)
하드웨어개조 (23)
멀알려줄까 (35)
홈베이킹&홈쿠킹 (2)
잡다한것들 (15)
Total
Today
Yesterday

달력

« » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

태그목록

최근에 올라온 글

ipAddresses 라는 TStringList에 IP 주소 문자열이 있다고 가정할 때,
동일한 IP주소가 몇 개나 있는지 찾고, 그 결과를 출력하는 예제입니다.
꼭 IP 주소가 아닌, 일반 문자열이나 단어등에도 적용해 볼 수 있습니다.

AddObject로 문자열의 개수를 추가하는 방식이라서, 간단하게 결과를 볼 수 있습니다.
아래 펌글에 좀 더 빠른 방법이 제안되어 있습니다만, 대용량이 아니라면 이것만 가지고도 충분히 빠른 결과를 볼 수 있습니다.

procedure TForm1.Button1Click(Sender: TObject);
var
  ls : TStringList;
  ip : string;
  ipAddresses : TStringList;
  n : integer;
  I: Integer;
begin
  memo1.Lines.Clear;
  memo2.Lines.Clear;

  ipAddresses := TStringList.Create;
  ipAddresses.Add('192.168.10.1');
  ipAddresses.Add('192.168.1.10');
  ipAddresses.Add('192.168.1.1');
  ipAddresses.Add('192.168.10.1');
  ipAddresses.Add('192.168.1.1');
  ipAddresses.Add('192.168.1.10');
  ipAddresses.Add('192.168.1.1');
  ipAddresses.Add('192.168.1.10');

  ls := TStringList.Create;
  ls.Sorted := true;
  for ip in ipAddresses do begin
    n := ls.IndexOf(ip);
    if n = -1 then
      ls.AddObject(ip, TObject(1))
    else
      ls.Objects[n] := TObject(Integer(ls.Objects[n]) + 1);
  end;

  memo1.Lines := ls;
  for I := 0 to ls.Count - 1 do
  begin
    memo2.Lines.Add(IntToStr(Integer(ls.Objects[I])));
  end;

end;
Posted by 훅크선장
, |