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
[59464] Re:[소스참조] OpenDialog 로 파일을 열고 처리 후 다시 열기를 하면 안 되는데...
장성호 [nasilso] 1215 읽음    2009-12-16 15:58
Save할때  TStringList인  sList를 free해버렸네요

Open할때 다시 sList를 다시 new하지 않았으니..
제대로 내용을 읽어오지조 못할것이구..

ListBox->Items에도 NULL이 할당되니..
당연히 아무것도 안들어가겠죠

그럼..


김효준 님이 쓰신 글 :
: 해당 폼은 차일드로 열려서 텍스트 문서를 열어서 다른 이름으로 저장하는 형태입니다.
:
: 텍스트 파일을 열어서 리스트박스에 추가하고
:
: 그 내용을 SaveDialog를 이용해서 다른 이름으로 저장했습니다.
:
: 그 상태에서 다시 부모창에서 차일드 폼을 실행 한 후
:
: OpenDialog로 파일 열기를 하면 해당 문서 파일이 리스트 박스에 보이지 않습니다.
:
: 해당 폼이 차일드로 열어서 닫기 누르면 종료되는 것인데 차일드 폼이 닫기로 없어지면
:
: 다시 열릴 때 초기화 같은게 필요한 것일까요?
:
: C++ 빌더 초보라서 이런 경우 난감하네요 ㅠ_ㅠ
:
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:  AnsiString str1;
: 
:  if(OpenDialog1->Execute())
:  {
:   sList->LoadFromFile(OpenDialog1->FileName);
: 
:   for(int i = 0; i < sList->Count; i++)
:   {
:    String str = sList->Strings[i];
: 
:    int idx = str.Pos(",");
:     sList->Strings[i] = "            " + str.SubString(1, idx-1) + "<"
:     + str.SubString(idx+1, str.Length()-idx).Trim() + ">";
:   }
: 
:   sList->Strings[0] = sOutlook;
: 
:   ListBox1->Items = sList;
:  }
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button2Click(TObject *Sender)
: {
:  AnsiString str2;
:  bool bCheck = true;
: 
:  if(SaveDialog1->Execute())
:  {
:   sListB->LoadFromFile(sDPath + "\\" + sAddr);
: 
:   for(int i = 0; i < sListB->Count; i++)
:   {
:    for(int j = 0; j< sList->Count; j++)
:    {
:      if (sList->Strings[j].Trim() == sListB->Strings[i].Trim())
:      {
:       bCheck = false;
:       break;
:      }
:    }
:    if(bCheck)
:    {
:      sList->Add(sListB->Strings[i]);
:    }
:    bCheck = true;
:   }
: 
:   //ShowMessage(sList->Text);
:   //ShowMessage(sListB->Text);
:   sList->SaveToFile(SaveDialog1->FileName);
: 
:   delete sListB;
:   delete sList;       //여기서 free해버렸네요..
: 
:   Form1->Close();
:  }
: }
: 

+ -

관련 글 리스트
59463 [소스참조] OpenDialog 로 파일을 열고 처리 후 다시 열기를 하면 안 되는데... 김효준 1065 2009/12/16
59464     Re:[소스참조] OpenDialog 로 파일을 열고 처리 후 다시 열기를 하면 안 되는데... 장성호 1215 2009/12/16
59466         매번 감사합니다. ^^ 김효준 835 2009/12/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.