<!--CodeS-->
type
TRGRIDCOL = record
CL_TIT_CPT : string;
CL_WID : integer;
CL_LVL : integer;
CL_LV_IDX : integer;
GRP_WID : integer;
GRP_NO : integer;
end;
rg_set_grp : array of TRGRIDGRP;
SetLength(rg_set_grp, 3);
<!--CodeE-->
이렇게 선언을 한 후
값을 집어넣을 때....
이벤트에서
<!--CodeS-->rg_set_grp := (('상품권번호', false, 2, false, 296, 2),
('매출부분', false, 2 true, 788, 2) );
<!--CodeE-->
값을 넣으려하니 컴파일 에러가 나네요...
레코드형에서는 배열의 값을 넣는것 처럼 선언을 할 수 없나요?
('매출부분', false, 2 true, 788, 2) );
변수 선언시 초기값을 지정하실려고 하시는건가요?
아니면 값을 넣으려고 하시는 건지요?
일단 변수 선언시 초기값 지정이라고 생각하겠습니다.
1. 동적 변수는 변수 선언시 초기값 지정을 할 수 없습니다.
말 그대로 동적으로 그 길이가 변하는데 초기값을 줄 순 없죠.
rg_set_grp : array of TRGRIDGRP; 에는 초기값을 줄 수 없습니다.
초기값이 아니라 기본값을 주고 싶으시다면 따로
SetLength(rg_set_grp, 크기); 로 크기를 잡아 주시고 넣으셔야 합니다.
rg_set_grp : array[0..1] of TRGRIDGRP; 이라면 초기값을 줄 수 있습니다.
2. 집어넣을 값에도 문제가 있습니다.
rg_set_grp := (('상품권번호', false, 2, false, 296, 2),
('매출부분', false, 2 true, 788, 2) );
여기서 보시면 위에 선언되있는 부분은 Integer로 잡으시고 두번이나 Boolean 값으로 넣으시는군요.
CL_TIT_CPT : string; = '상품권번호'
CL_WID : integer; = false
CL_LVL : integer; = 2
CL_LV_IDX : integer; = false
GRP_WID : integer; = 296
GRP_NO : integer; = 2
CL_WID와 CL_LV_IDX의 값을 Boolean형으로 바꾸시던지
두 항목에 들어갈 값을 0, 1로만 제한해서 Ord(True), Ord(False)로 집어넣으시던지 하셔야 할겁니다.
3. 지역변수에선 초기값을 지정할 수 없습니다.
유닛 전역에서 사용되는 변수에만 할당이 가능합니다.
4. 따로 한몫에 값을 주지않고도
rg_set_grp[0].CL_TIT_CPT := '상품권번호';
rg_set_grp[0].CL_WID := Ord(false);
rg_set_grp[0].CL_LVL := 2;
rg_set_grp[0].CL_LV_IDX := Ord(false);
rg_set_grp[0].GRP_WID := 296;
rg_set_grp[0].GRP_NO := 2;
이런식으로 넣고 쓰셔도 됩니다. (괜한 참견일려나..;)