|
함수의 리턴형이 AnsiString이네요.. 그리고 리턴시 *연산자로 값 참조를 했구요
그것 첫번째 AnsiString의 값만을 리턴하겟다는 의미가 됩니다.
AnsiString *로 리턴형을 선언하시고
return CheckedTestCase; 하시면 배열 전체에 대한 접근이 가능하겠지요?
조심하셔야 할 사항이 있습니다. 배열의 크기를 벗어나는 형태로 접근할때 오류가 발생합니다.
데이터의 갯수까지 리턴하는 방법에는 여러가지가 있습니다.
1. 함수의 파라메터로 int * 형을 입력받아 데이터의 총갯수를 리턴한다.
2. 데이터갯수와 데이터형을 가지고 있는 구조체를 선언하고 구조체 포인터를 리턴한후
호출한측에서 구조체의 데이터갯수를 참조해 데이터를 읽어들인다.
3. Linked list를 작성한후 tail에 null을 설정한후 리턴한다.
호츨한측에서는 null값이 나올때까지 loop를 돌며 값을 사용한다.
4. 글로벌 변수를 사용하는 무식한 방법에서부터 각 상황에 따라 수없이 많은 방법이 좋재하겠죠?
프로그래머의 몫입니다.. ^^
라모드 님이 쓰신 글 :
: 어떤 함수에서 AnsiString으로 된 배열모두 Return 하려고 아래와 같이 Source code를 작성하였는데 배열의 첫번째 내용만 리턴되고 나머지는 모두 Black 입니다.
: 어떻게 하면 배열의 모든 값들을 return 할 수 있을까요?
: 그리고 한가지더 배열의 크기를 100으로 잡았는데 실제로 어디까지 데이터가 차있는지 알 수 있는 쉬운 방법이 있을까요?
:
:
: // main source code
: void __fastcall TForm1::Button2Click(TObject *Sender)
: {
: AnsiString temp[100];
: *temp = ScriptList.GetCheckedTestCase();
: Edit1->Text=temp[2];
:
: }
:
: // 함수
: AnsiString __fastcall TScriptList::GetCheckedTestCase()
: {
: int j=0;
: for (int i=0;i<Form1->CheckListBox1->Items->Count;i++)
: {
: if (Form1->CheckListBox1->Checked[i]==true)
: {
:
: CheckedTestCase[j]=Form1->CheckListBox1->Items->Strings[i];
: Form1->RichEdit1->Lines->Add(CheckedTestCase[j]);
: j++;
: }
: }
: return *CheckedTestCase;
: }
|