|
참고하세요..
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString *pA[10];
for ( int i = 0 ; i < 10 ; i++ )
pA[i] = new AnsiString();
for ( int i = 0 ; i < 10 ; i++ )
*pA[i] = IntToStr(i);
AnsiString b;
for ( int i = 0 ; i < 10 ; i++ )
b = *pA[i];
for ( int i = 0 ; i < 10 ; i++ )
delete pA[i];
}
유일한나 님이 쓰신 글 :
: 배열 생성은 되던거같은데... 안되나요??
:
: 그럼 어떻게하면되나요..??
:
: char 로 써야하나요..??
:
: 부탁드립니다...
:
: Lyn 님이 쓰신 글 :
: : AnsiString은 Class 이므로 malloc으로 생성하면 안됨
: :
: : 유일한나 님이 쓰신 글 :
: : : //---------------------------------------------------------------------------
: : :
: : : #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] ... 배열 다만들어졌을텐데...
: : :
|