Q&A

  • 리스트목록 아이템 중복값 없애는 방법?
리스트목록에 아이템중에 같은 종류의 아이템이 있으면 이걸 어떻게 중복체크해서 없앨수가 있나요?

여러개의 같은 페이지가 리스트 박스에 아이템으로 들어갑니다.

    if FindFirst(pathname + 'test_files*.*', faAnyFile, SR) = 0 then begin
        repeat
            if (SR.NAME <> '.') and (SR.NAME <> '..') then begin
            FileName := pathname + 'test_files' + Sr.Name;
            Assignfile(GFile,FileName);
            Reset(GFile);
            While not Eof(GFile) do begin
                ReadLn(GFile,DataLine);
                Posion := Pos(Search, UpperCase(DataLine));
                if Posion > 0 then begin
                    //num := num + 1 ;
                    if not PChar(Form2.ListBox1.Items.Strings[i]) = FileName then begin
                       Form2.ListBox1.Items.Add(FileName {+ ' : ' + DataLine});
                    end;

                end;
            end;
            CloseFile(GFile);
            i := i + 1;
            end;

        until (FindNext(SR)<>0);

            if num < 1 then begin
               Form2.ListBox1.Items.Add('더이상 검색결과가 없습니다.');
            end;

        Form2.Show;
        Form2.Label2.Caption := Search;
        Edit1.Text := '';

    end;
    FindClose(SR);
end;

반복문이 돌면서 add시켜 주는 구문에 이미 존재하는 값이라면 입력하지 말도록 조건문을 달려고 합니다.

조건문에서 에러메세지가 나오는군요

Operator not applicable to this operand type

음... 잘못된 방법인가요?
1  COMMENTS
  • Profile
    nilriri™ 2003.03.01 12:50
    꼼꼼하게 훝어 보고 테스트해 볼 수는 없지만..
    에러 내용만으로 봐서는
    if not PChar(Form2.ListBox1.Items.Strings[i]) = FileName then begin
    이게 문제군요..
    if not (PChar(Form2.ListBox1.Items.Strings[i]) = FileName) then begin
    괄호를 지정해 주셔야 할거 같습니다만..

    그럼..