매번 정확한 해결법을 알려주시니 정말 감사합니다.
^^;
장성호 님이 쓰신 글 :
: 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();
: : }
: : }
: : |