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
[69299] Re:왜 에러가나는지 도저히모르겠습니다 ㅠ.ㅠ
아까그놈 [concerto] 1876 읽음    2013-03-29 13:36
AnsiString *a;
int cnt;

cnt = 10;

a = new AnsiString[cnt];

for(int i = 0 ; i < cnt ; i++) {
    a[i] = "xxxxxx";
}

delete[] a;

요딴식으로 쓰시면 될것 같습니다.

참고로 class 타입의 변수는 구조체처럼 단순 메모리 할당만을 하는 것이 아니고
생성자를 호출하거나...하는 등 메모리 할당 후 할것이 많아서
new 연산자를 사용합니다.


유일한나 님이 쓰신 글 :
: //---------------------------------------------------------------------------
:
: #include <vcl.h>
: #include <stdio.h>
: #include <string.h>
: #include <stdlib.h>
: #pragma hdrstop
:
: #include "Unit1.h"
:
: //---------------------------------------------------------------------------
: #pragma package(smart_init)
: #pragma resource "*.dfm"
: TForm1 *Form1;
: //---------------------------------------------------------------------------
:
: //                                                     
:
: //---------------------------------------------------------------------------
: __fastcall TForm1::TForm1(TComponent* Owner)
:     : TForm(Owner)
: {
:     Fcount=0;
:
:     a=(AnsiString*)malloc(sizeof(AnsiString)*30);
:     b=(AnsiString*)malloc(sizeof(AnsiString)*30);
:     c=(AnsiString*)malloc(sizeof(AnsiString)*30);
:     d=(AnsiString*)malloc(sizeof(AnsiString)*30);
:
:
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:      for(int i=0;i<30;i++)   // 배열 초기화 (초기화위치중요)
:     {                       // a0파일에 저장되는 배열값이 바뀌지않게 버튼을 누를때마다 계속 초기화.
:         a[i]=" ";
:         b[i]=" ";
:         c[i]=" ";
:         d[i]=" ";
:     }
:
:     Fcount=Fcount+1;
:
:     stream=fopen("a0.xls","w");
:
:     a[0]="출장목적";     // 해당위치에 지정한값 저장
:     b[0]="출장자";
:     c[0]="부서";
:     d[0]="직급";
:     a[5]="일비합계";
:     b[5]="사용합계";
:     c[5]="선불금";
:     d[5]="총 청구액";
:
:     for(int i=0;i<30;i++)      // 변수들 순차적으로 돌리기위함. a[0]~a[30] , b[0]~b[30]
:        {
:            fprintf(stream,"%s\t%s\t%s\t%s\n",a[i],b[i],c[i],d[i]);  // \t 키가 행과 행을 나눠줌
:        }
:
:     fclose(stream);
:
:
:
:
:     for(int i=1;i<=Fcount;i++)
:     {
:         char fname[256];
:
:         if(Fcount==i)  // 먼저 저장된 파일의 값에 영향을 주지 않기위해.
:         {
:             sprintf(fname, "a%d.xls", i);
:             stream=fopen(fname,"w");
:
:
:             a[1]=Edit1->Text;
:             b[1]=Edit2->Text;
:             c[1]=Edit3->Text;
:             d[1]=Edit4->Text;
:             a[6]=Edit5->Text;
:             b[6]=Edit6->Text;
:             c[6]=Edit7->Text;
:             d[6]=Edit8->Text;
:
:         for(int i=0;i<30;i++)
:         {
:             fprintf(stream,"%s\t%s\t%s\t%s\n",a[i],b[i],c[i],d[i]);
:         }
:
:         fclose(stream);
:
:         }
:     }
:
:
:
:
:  }
:
: //---------------------------------------------------------------------------
:
:
: void __fastcall TForm1::Button2Click(TObject *Sender)
: {
:     Edit1->Text="";
:     Edit2->Text="";
:     Edit3->Text="";
:     Edit4->Text="";
:     Edit5->Text="";
:     Edit6->Text="";
:     Edit7->Text="";
:     Edit8->Text="";
: }
: //---------------------------------------------------------------------------
:
: 원래 배열을 AnsiString a[30]
: 이런식으로 정해서 썼는데, 배열값낭비를 막기위해, 추가시키기위해
: 동적메모리를 쓰려고
: AnsiString* a;
:  a=(AnsiString*)malloc(sizeof(AnsiString)*30);
: 이런식으로 썼거든요, 이러면 a[0],a[1],a[2]~a[29]까지 만들어지는거자나요,
: 프로그램돌려봐도 실행은 되요. 근데 Button1Click클릭하면,
:
: for(int i=0;i<30;i++)  
:     {                      
:         a[i]=" ";
:         b[i]=" ";   <- 이부분서부터 에러가나요 ..
:         c[i]=" ";
:         d[i]=" ";
:     }
:
: 왜안되는걸까요..?? a[0]~a[29],b[0]~b[29] ...  배열 다만들어졌을텐데...
:

+ -

관련 글 리스트
69295 왜 에러가나는지 도저히모르겠습니다 ㅠ.ㅠ 유일한나 1704 2013/03/28
69299     Re:왜 에러가나는지 도저히모르겠습니다 ㅠ.ㅠ 아까그놈 1876 2013/03/29
69296     Re:왜 에러가나는지 도저히모르겠습니다 ㅠ.ㅠ Lyn 1772 2013/03/28
69297         Re:Re:왜 에러가나는지 도저히모르겠습니다 ㅠ.ㅠ 유일한나 1794 2013/03/28
69298             Re:Re:Re:왜 에러가나는지 도저히모르겠습니다 ㅠ.ㅠ 땅주인 1865 2013/03/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.