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
[71814] Re:Re:Re:구조체 초기화 (날짜변수)
땅주인 [heaven2] 3378 읽음    2014-10-02 10:00
memset( (void *) iIndex, 0, sizeof(iIndex) * 20 * 20);  이어야 초기화는 될 텐데..
사실 클래스의 초기화를 memset으로 하는 게.. 좀.. 잘 하지 않습니다.
클래스가 코드영역+데이터영역인데.. memset은 데이터영역만 초기화하는 것으로 아는데.. 아닌가? 잘 모르겠네..
그냥 기본 데이터의 배열의 경우 이렇게 하고 클래스는
그냥 생성사에서 초기화를 담당하고, Struct도 클래스니..그냥 이렇게..
재가 하는 방식입니다.

빌더 님이 쓰신 글 :
: 감사합니다 말씀하신 방법으로 하니 해결이 되었네요.
: 근데 궁금하긴하네요. 왜 멤셋으로 돌릴땐 날짜값이 초기화가 안되는지 모르겠어요.
:
:
:
: 땅주인 님이 쓰신 글 :
: : 이것이 어떨까 싶네요.
: :
: :
: : struct TData {
: : 	float a;
: : 	float b;
: : 	TDateTime c;
: : 
: : 	TData::TData()
: : 	{
: : 		a = 0;
: : 		b = 0;
: : 		c = 0;
: : 	}
: : };
: : 

: :
: : 빌더 님이 쓰신 글 :
: : : 안녕하세요. 여쭤볼게 있는데요..
: : :
: : : struct TData{
: : :     float     a; 
: : :     float     b; 
: : :     TDateTime c; 
: : : };
: : :
: : : 이렇게 구조체를 선언하고 밑에서
: : :
: : :     TData iIndex[20][20];
: : :     memset( (void *) iIndex, 0, sizeof(iIndex));
: : :
: : : 요렇게 구조체 배열 변수를 만들고 빌더포럼에서 알려주신대로 memset 초기화를 했는데요.
: : : 구현부분에서
: : :
: : : dxMemData1->First();
: : : for (x = 1; x <= RCnt; x++)
: : : {
: : :     iIndex[x][y].a = dxMemData1->FieldByName("Col1")->AsFloat;
: : :     iIndex[x][y].b = dxMemData1->FieldByName(dxMemData1->Fields->FieldByNumber(x+1)->FieldName)->AsFloat;
: : :     iIndex[x][y].c = FormatDateTime("YYYY-MM-dd", ReplaceStr(dxMemData1->Fields->FieldByNumber(y+1)->FieldName + "-01", "_", "-"));;
: : :
: : :        for (y = 2; y <= FCnt; y++)   
: : :     {
: : :         iIndex[x][y].a = dxMemData1->FieldByName("Col1")->AsFloat;
: : :         iIndex[x][y].b = dxMemData1->FieldByName(dxMemData1->Fields->FieldByNumber(y+1)->FieldName)->AsFloat;
: : :         iIndex[x][y].c = FormatDateTime("YYYY-MM-dd", ReplaceStr(dxMemData1->Fields->FieldByNumber(y+1)->FieldName + "-01", "_", "-"));;
: : :     }
: : :     dxMemData1->Next();
: : : }
: : :
: : :
: : : 머이런식의 그리드에 있는 값을 넣는 코드인데요.
: : :
: : : float 형 변수들은 0으로 잘 초기화가 됬는데,.
: : : TDateTime 형이 쓰레기값이 들어있어서 for문에서 값을 넣는데도 이상한 값을 가지고 있어요 ㅠㅠ
: : : iIndex[x][y].c  에 값을 넣을때 자꾸 쓰레기값이 있어서 덮어써지지가 않아서요
: : : 날짜변수까지 포함해서 싹 초기화하는 방법이 없으까요??
: : :
: : :
: : :
: : :

+ -

관련 글 리스트
71801 구조체 초기화 (날짜변수) 빌더 3350 2014/09/30
71808     Re:구조체 초기화 (날짜변수) 빌더초보 3579 2014/10/01
71803     Re:구조체 초기화 (날짜변수) 땅주인 3501 2014/10/01
71813         Re:Re:구조체 초기화 (날짜변수) 빌더 3346 2014/10/02
71814             Re:Re:Re:구조체 초기화 (날짜변수) 땅주인 3378 2014/10/02
71816                 Re:Re:Re:Re:구조체 초기화 (날짜변수) 3582 2014/10/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.