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
[71816] Re:Re:Re:Re:구조체 초기화 (날짜변수)
[] 3581 읽음    2014-10-02 11:20
아 말씀하신데로에요.
memset도 그렇고 그냥 임의로 0을 일일히 주는 방법 모두 실행해보면 제가 첨부파일에 올린것처럼
데이터영역은 0이되지만 코드영역은 "1899-12-30 요렇게 되더라고요. (반대인가?^^;;)
1899년 12월30일이 시스템의 첫 날??이라고 하는것같기도 하고 ㅠㅠ
실행하는데 자꾸 오류가나서 저 가비지값때문인가 했는데 그건 아니라 일단 패스했습니다.
고수님들의 조언감사합니다.



땅주인 님이 쓰신 글 :
: 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 구조체 초기화 (날짜변수) 빌더 3349 2014/09/30
71808     Re:구조체 초기화 (날짜변수) 빌더초보 3579 2014/10/01
71803     Re:구조체 초기화 (날짜변수) 땅주인 3501 2014/10/01
71813         Re:Re:구조체 초기화 (날짜변수) 빌더 3345 2014/10/02
71814             Re:Re:Re:구조체 초기화 (날짜변수) 땅주인 3378 2014/10/02
71816                 Re:Re:Re:Re:구조체 초기화 (날짜변수) 3581 2014/10/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.