아래 코드는 최요일님께서 에이트 창에서 입력받아 트리뷰에서 노드 이름을 뽑아내는 부분입니다.
var 
    CurNode: TTreeNode; 
    StrList: TStringList; 
    S: string; 
    Index: Integer; 
begin 
    S := Edit1.Text; // 'apple mango banana' 
    StrList := TStringList.Create; 
    ExtractStrings([' '], [' '], PChar(S), StrList); 
    CurNode := TreeView1.Items.GetFirstNode; 
    repeat 
        for Index := 0 to StrList.Count - 1 do 
        begin 
            if Pos(StrList.Strings[Index], CurNode.Text) <> 0 then 
            begin 
                ListBox1.Items.Add(CurNode.Text); 
                Break; 
            end; 
        end; 
        CurNode := CurNode.GetNext; 
    until CurNode = nil; 
    StrList.Free; 
end; 
위 코드는 같은 이름(같은 이름을 가진 노드)에 상관 없이 리스트박스에 입력됩니다. 그래서 아래와 같이 코드를 바꿔서 중복되는 이름을 걸러서 리스트박스에 들어가게 하려고 했습니다.
그러나 아무 작동도 안하는게 어디가 잘못 되었는지 잘 모르겠습니다. -.-
var 
    CurNode: TTreeNode; 
    StrList: TStringList; 
    S: string; 
    Index: Integer; 
begin 
    S := Edit1.Text; // 'apple mango banana' 
    StrList := TStringList.Create; 
    ExtractStrings([' '], [' '], PChar(S), StrList); 
    CurNode := TreeView1.Items.GetFirstNode; 
    repeat 
        for Index := 0 to StrList.Count - 1 do 
        begin 
            if Pos(StrList.Strings[Index], CurNode.Text) <> 0 then 
            begin 
                for i:=0 to listbox1.items.count-1 do  // 여기서 부터
                begin
                   if listbox1.items.strings[i] = Trim(CurNode.Text) then
                   begin
                     Break;
                   end;
                end;   // 여기까지 추가.
                ListBox1.Items.Add(CurNode.Text); 
                Break; 
            end; 
        end; 
        CurNode := CurNode.GetNext; 
    until CurNode = nil; 
    StrList.Free; 
end; 
			 
	
	
    
    
	
	
    
    
    
쩝~ for문으로 돌리셨으면 중복된 이름인가 아닌가를 알아야 하잖아요. 그냥 break로 나가기만 하면 하나 마나죠...
var
Found: Boolean;
begin
......
Found := False;
for i:=0 to listbox1.items.count-1 do // 여기서 부터
begin
if listbox1.items.strings[i] = Trim(CurNode.Text) then
begin
Found := True;
Break
end;
end; // 여기까지 추가.
if not Found then
ListBox1.Items.Add(CurNode.Text);
Break;
그리고 참고로 TStrings에는 IndexOf라는 아주 간편한 메소드가 있습니다.
......
if ListBox1.Items.IndexOf( Trim(CurNode.Text) ) = -1 then // not found
begin
ListBox1.Items.Add( CurNode.Text );
end;
Break;
^^ 항상 즐코하세요...