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();
: }
: }
: |