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
[74537] Re:해결방안좀 알려주세요...
[] 67 읽음    2017-08-10 18:33
님이 쓰신 글 :
: __fastcall TForm1::TForm1(TComponent* Owner)
:         : TForm(Owner)
: {
:         tlist = new TList();

          // pImg 를 멤버 변수로 선언한것 같은데..
          // 지역,전역,멤버, 변수 통용 범위 규칙를 모르고 있는걸로 보입니다.
         //  pImg 중복선언되었고 이 함수 벗어나면 초기화 됩니다(변수통용범위)
         // 따라서 멤버변수 pImg 에는 아무값도 없는 상태입니다.
:         TImage *pImg[]= {Image1,Image2,Image3,Image4,Image5,Image6};
: }
:
: ---------------------------------------------------
: void __fastcall TForm1::Button3Click(TObject *Sender)
: {
:         int n = 0;
:         TSearchRec sr;
:         int iAttributes = 0;
:         if(LMDDirDlg1->Execute())
:         {
:                 //폴더내의 jpg파일만 불러오기
:                 String path = LMDDirDlg1->Path + "\\*.jpg";
:                 if(FindFirst(path, faAnyFile, sr) == 0)
:                 {
:                         do
:                         {

                                 // 아래 코드는 아무것도 안하는 코드입니다.
                                // if 문으로 되어 있는걸 잘못 가져온걸로 보이네요
:                                 (sr.Attr & iAttributes) == sr.Attr;
:                                 list = new List();
                                // 여기서는 왜 n+1 이죠 ? 의도한대로 한거라면 상관없지만
                                // 아니라면 메모리 파괴가 일어날수 있습니다.
                                // 그리고 여기서는  어떤 역활도 하는게 없네요.
:                                 Image[n+1] = new TImage(this);
:                                 list->i = sr.Name;
:                                 tlist->Add(list);
                                  // 이것도 불필요한 코드 네요
:                                 list = (List*) tlist->Items[n];
                                 // 동적할당을 하려고 한것 같은데 방법이 틀렸습니다.
                                 // 특히 위에 TImage *pImg[] = 위에 설명한 부분 때문에 이 코드에서는 access vio.. 날수 밖에 없습니다.
                                 // 또한  *pImg[] = 로 제대로 할당했다고 해도.. jpg 파일 갯수가 초과되는 경우 또 에러납니다.
                   :                                 pImg[n]->Picture->LoadFromFile(LMDDirDlg1->Path + "\\" + list->i);
:                                 n++;
:
                                 // 그리고 new 로 메모리 할당을 했는데 해제는 하셨는지도 의심스럽네요.
:                         }
:                         while(FindNext(sr) == 0);
:                 }
:                 FindClose(sr);
:         }
:
:                 //폴더 경로를 Edit에 표시
:                 Edit1->Text = LMDDirDlg1->Path;
:
: 제가 이미지 리스트에 이미지를 다같이 출력할려고 하는데 보시다시피 코드는 위에 처럼 짜놔둔 상태에서 실행을 하면 실행은 정상적으로 되지만 폴더에 있는 이미지 파일을 가져올때 첨부파일과 같은 오류가 나오면서 이미지 출력이 되지 않습니다.
: 혼자서 여러방법으로 해보고는 있는데 해결이 되지않아요.
: 간략한 해결팁이라도 주시면 감사합니다.
:
:

+ -

관련 글 리스트
74533 해결방안좀 알려주세요... 80 2017-08-09
74537     Re:해결방안좀 알려주세요... 67 2017-08-10
74536     Re:해결방안좀 알려주세요...[해결] 79 2017-08-10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.