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
[51996] Re:Re:Re:리스트뷰에서 삭제 및 이벤트 처리 질문드려요.
장성호 [nasilso] 1225 읽음    2008-01-22 11:26
어떤 폴더를 다른곳으로 복사할때

소스 폴더아래에 폴더도 있고 ...파일도 있다면?

파일은 대상 폴더로 copy하면 되는데...
폴더인 경우에는 그 폴더 아래에 또 폴더가 있을수 있고 파일도 있을수 있으므로..
그 폴더 안으로 들어가서 같은작업을 반복해야죠?

보통 이런경우  재귀함수가 필요합니다.

void   AllCopys( 소스폴더 , 대상폴더)
{
        ForceDirectories(대상폴더);

        TSearchRec sr;
        FindFirst ..
        do
        {
               if( sr 폴더이면 )
               {
                      AllCopys( 소스폴더+폴더명 , 대상폴더+폴더명);    //여기서 재귀호출합니다.       
               }
               else if( sr이 파일이면 )
               {
                      CopyFile ( 소스폴더+파일명, 대상폴더+파일명) ;
               }     
     
        }while(FindNext(..))

}

위와같은 식으로 만들면 됩니다.

폴더를 전체 복사하는 함수가 검색하면 수두룩 나올것이지만...
직접 함 만들어 보세요

그럼..



네버 님이 쓰신 글 :
: 장성호님 답변 고맙습니다^^
: 이벤트를 함께 사용하고 있는걸 미처 확인을 못했네요^^
:
: 죄송한데 질문하나 더해도 될까요??
:
: 지난번에 파일 복사에 대해서 질문을 했었는데.
:
: 만약 d드라이브 밑에 폴더가 1 , 2, 3 등 여러개가 있고 각각의 폴더안에는 또 몇개의 데이타가 있습니다.
: 이럴경우 d드라이 통째로 c드라이브에 복사를 하는 방법은 없을까요?
:
:
:
: 장성호 님이 쓰신 글 :
: : 간단하게
: :
: : 1. 삭제는
: :    - for문은 꺼꾸로 돌리세요
: :      Items->Count -1 부터 0 까지
: :     이유는 생각해보시면 금방아실 겁니다.
: :
: : 2. 파일open과 아이템 삭제
: :    ; 이벤트를  그렇게 SelectItem에 걸어놓았으니  어쩔수 없을것 같은데요
: :      파일 open부분을 DoubleClick 이벤트에 넣는것은 어떤지요?
: :
: : 그럼..
: :
: : 네버 님이 쓰신 글 :
: : : 매번 답변주시는 장성호님 너무 고맙습니다^^
: : :
: : : 클립보드 문제는 잘 해결하였습니다~
: : :
: : : 리스트뷰에  몇개의 아이템을 추가시키고 그 아이템을 클릭하면 파일을 열수있도록 처리를 하였습니다.
: : : 또한 체크박스를 사용하여 체크한 데이타를 삭제하는 기능도 넣었구요.
: : :
: : : 그런데 문제가 발생했네요.
: : : 일단 여러개의 아이템을 선택한 후 삭제할시 가장먼저 추가되었던 아이템이 삭제가 되질 않아요.
: : : ====================================================================================
: : :  for(int i = 0; i < Form3->ListView1->Items->Count; i++)
: : :    {
: : :       if(Form3->ListView1->Items->Item[i]->Checked)
: : :       {
: : :           Form3->ListView1->Items->Delete(i);
: : :       }
: : :    }
: : : ==================================================================================
: : : 이렇게 코딩했습니다.
: : :
: : : 두번째 문제는 아이템의 캡션을 클릭하면 그 파일을 열도록 했어요.
: : : 그런데 캡션을 선택해서 그 파일을 연 다음
: : : 다시 파일을 닫고
: : : 그 아이템의 체크 박스를 선택하여 삭제 하려고 할 경우 다시 또 파일이 열린 다음에 삭제가 됩니다.
: : : ===================================================================================
: : : oid __fastcall TForm3::ListView1SelectItem(TObject *Sender,
: : :       TListItem *Item, bool Selected)
: : : {
: : :     ShellExecute(0, "open", event_file.c_str(), "", "", SW_SHOWNORMAL);
: : : }
: : : 
: : : 아이템의 캡션을 선택한 후 그 파일을 보여주는건 이렇게 처리를 했답니다.
: : :
: : : 그럼 답변 기다리겠습니다.

+ -

관련 글 리스트
51989 리스트뷰에서 삭제 및 이벤트 처리 질문드려요. 네버 1169 2008/01/22
51990     Re:리스트뷰에서 삭제 및 이벤트 처리 질문드려요. 장성호 1119 2008/01/22
51996             Re:Re:Re:리스트뷰에서 삭제 및 이벤트 처리 질문드려요. 장성호 1225 2008/01/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.