답변 감사합니다...^-^
설명하신대로 하였더니 잘됩니다..
AnsiString sCon[10];
void __fastcall GetCombo(TComboBox *Combo)
{
int nPos1;
int nPos2;
String sFname="Report.txt";
TStringList *sLst;
sLst= new TStringList;
sLst->LoadFromFile(sFname);
AnsiString sTitle[10];
//sLst->Sorted=true;
//sLst->Duplicates=dupIgnore; // 정렬하면서 중복되는 데이타 삭제
Combo->Items->Clear();
for ( int i=0 ; iCount ; i++)
{
AnsiString temp = sLst->Strings[i];
if(temp>0)
{
nPos1 = temp.Pos("["); //[위치를 찾음
nPos2 = temp.Pos("]");
sTitle[i] = temp.SubString(nPos1+1,nPos2-nPos1-1);
sCon[i] = temp.SubString(nPos2+1,temp.Length()-nPos2);
}
Combo->Items->Add(sTitle[i]);
}
delete sLst;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormCreate(TObject *Sender)
{
GetCombo(ComboBox1);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ComboBox1Select(TObject *Sender)
{
int idx=ComboBox1->ItemIndex;
Edit1->Text = sCon[idx];
}
//---------------------------------------------------------------------------
C++ Builder 재미를 하나하나 늘여갑니다.. ㅎㅎ
송신영 님이 쓰신 글 :
: 뭐가 잘 안된다는 것지 잘 모르겠네요
: 질문 내용이 좀 부족합니다.
:
: 일단 ComboBox에 구분항목을 다 넣으려면
: for 구문 에서 ComboBox1->Items->Add() 해서 하나씩 다 넣어줘야됩니다.
: ComboBox 선택 이밴트에서 선택된 인덱스 구해서 항목내용이 들어있는
: 배열의 값을 Edit 에 출력하면 됩니다.
:
: temp.SubString(nPos1+1,nPos2-2); 이 부분도 만약 '[' 문자가 시작되는 위치가
: 첫번째가 아니고 앞쪽에 공백이 있다면 잘못된 방식입니다.
: nPos2 - nPos1 방식의 값을 사용해야합니다. SubString()의 두번째 파라미터는 위치값이 아니라
: 스트링 길이입니다.
:
:
:
: 정원철 님이 쓰신 글 :
: : [첫번째]어쩌구 저쩌구 ....처음이다.
: : [두번째]또 어쩌구 저쩌구 두번째네.
: : [세번째]세번째 선택됬네..
: : ... ...
: :
: : 위와 같은 형식으로 작성된 텍스트 문서파일 읽어서
: :
: : ComboBox1->Text = 구분항목;
: : Edit1->Text = 항목내용;
: : 으로 보여지게 할려고 하는데 잘 안돼네요. 코드 좀 봐주세요..
: :
: :
: : void __fastcall TForm1::FormCreate(TObject *Sender)
: : {
: : int nPos1 = 1;
: : int nPos2 = 1;
: : AnsiString sTitle[30];
: : AnsiString sCon[30];
: : String sFname="Report.txt";
: : TStringList *sLst = new TStringList;
: : sLst->LoadFromFile(sFname) ;
: : sLst->Sorted=true;
: : sLst->Duplicates=dupIgnore; // 정렬하면서 중복되는 데이타 삭제
: : for(int i=0;iCount;i++)
: : {
: : AnsiString temp = sLst->Strings[i];
: : while(temp != "")
: : {
: : nPos1 = temp.Pos("["); //[위치를 찾음
: : nPos2 = temp.Pos("]");
: : if(nPos1)
: : {
: : sTitle[i] = temp.SubString(nPos1+1,nPos2-2);
: : sCon[i] = temp.SubString(nPos2+1,temp.Length());
: :
: : }
: : }
: : }
: : ComboBox1->Text = sTitle[0];
: : Edit1->Text = sCon[0];
: : delete sLst;
: : }
|