C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[3875] Re:다시 질문입니다.......
박지훈.임프 [cbuilder] 3478 읽음    2000-08-04 00:00
박상열 님이 쓰신 글 :
: 안녕하세여.....제가조금 멍청해서 다시질문드립니다
: 근데여 ==로 Ansi스트링을 비교해서요
: 비교한 값이 참이면 메세지박스를 띄우고
: 참이아니면 다른 리스트박스에 비교하고자했던 스트링을 넣으려고 하는데요
: 디버거를 실행해서 보니까요
: == 연산으로 했을때 양쪽다 같은값이 들어가도 메세지박스가 뜨지가 않걸랑요
: 이유가 무엇인지  아니면 제가 엉뚱하게 코딩을 해서인지.....
: 수고스럽겠지만 한번만 더 봐주세여
:
:         int k1;
:         AnsiString astr1,r_astr;
:         char szBuff[128],szBuff1[128];
:
:         // 리스트박스의 사용자를 친구로 등록
:
:         for ( int cnt=0;cnt<Search->ListBox1->Items->Count; cnt++ ){
:              k1 = Search->ListBox1->Selected[cnt];
:                if(k1){
:                   astr1 = Search->ListBox1->Items->Strings[cnt];
:                   }
:               }
:         for ( int cnt=0;cnt<Register->ListBox1->Items->Count; cnt++ ) {
:              r_astr = Register->ListBox1->Items->Strings[cnt];
:                if(astr1 == r_astr){
:                   MessageDlg("이미 등록되있는 친구입니다",mtInformation,TMsgDlgButtons() <<mbOK,0);
:                     break;
:                   }
:                else{
:                   Register->Show();
:                   Register->ListBox1->Items->Add(astr1.SubString(1,80));
:                   Register->SaveFile();
:                }
:
:
: }
:
: 그럼 부탁좀드리겠습니다.....



임펠리테리입니다.

보여주신 내용만으로는 이상이 없어보입니다. 실제로 다른 문자열이거나, 혹은 마지막의
Register->ListBox1->Items->Add(astr1.SubString(1,80));
이 라인이 의심스럽습니다.

참고로 말씀드리면.. TListBox에서 선택된 아이템 문자열을 얻어오기 위해 for 루프를 돌리면서 TListBox::Selected 프로퍼티로 검사를 하셨는데, 멀티셀렉트가 가능한 경우라면 그렇게 해야하지만, 보여주신 코드를 봐서는 멀티셀렉트를 고려하지 않으셨으니 그냥,
Search->ListBox1->Items->Strings[Search->ListBox1->ItemIndex]
라고 하면 선택된 아이템의 문자열이 됩니다.

또한, TListBox::Items 프로퍼티는 TStrings형이므로, IndexOf() 메소드를 쓰면 소스가 아주 간단하게 됩니다. TStrings::IndexOf() 메소드는 인자로 넘겨준 문자열이 존재할 경우 그 인덱스를 돌려주고, 만약 없으면 -1을 돌려주는 함수입니다.

astr1 = Search->ListBox1->Items->Strings[Search->ListBox1->ItemIndex]
if(Register->ListBox1->Items->IndexOf(astr1) >= 0)
    MessageDlg("이미 등록되있는 친구입니다",mtInformation,TMsgDlgButtons() <<mbOK,0);
else
{
    Register->Show();
    Register->ListBox1->Items->Add(astr1.SubString(1,80));
    Register->SaveFile();
}

그럼 참고하시길...

+ -

관련 글 리스트
3870 Ansi 스트링을 비교해서여..................... 박상열 3392 2000/08/04
3872     Re:Ansi 스트링을 비교해서여..................... 박지훈.임프 3448 2000/08/04
3873         다시 질문입니다....... 박상열 3401 2000/08/04
3875             Re:다시 질문입니다....... 박지훈.임프 3478 2000/08/04
3878                 Re:Re:다시 질문입니다....... 이영수 3335 2000/08/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.