TR_5005_REPEAT_STRUCT = Packed Record
OrderNo : Array [1..10] of char; //원주문번호
ItemCode : Array [1.. 6] of char; //종목코드
OrderClass : char; // 주문구분
OrderPrice : Array [1..10] of char; // 주문가결
OrderQty : Array [1..10] of char; // 주문수량
DealPrice : Array [1..10] of char; // 체결가격
DealQty : Array [1..10] of char; // 체결수량
RemainQty : Array [1..10] of char; //미체결수량
update_flag : char; // 정정취소여부
OriginOrderNo : Array [1..10] of char; // 원주문번호
end;
TR_5005_STRUCT = Packed Record
AcctNo : Array [1..14] of char; //계좌번호
ResultCode : Array [1.. 4] of char; //처리코드
ItemCount : Array [1.. 5] of char; //종목수
1--> RepeatData : Array [1..10000] of TR_5005_REPEAT_STRUCT;
end;
1부분에서 RepeatData : Array [1..10000] of TR_5005_REPEAT_STRUCT; 처럼 하면 메모리를 많이할당해서 동적으로 할당하려고 하는데요
RepeatData : Array of TR_5005_REPEAT_STRUCT; 식으로 동적배열이안되는군요 어떻게해야하나요
OrderNo : Array [1..10] of char; //원주문번호
ItemCode : Array [1.. 6] of char; //종목코드
OrderClass : char; // 주문구분
OrderPrice : Array [1..10] of char; // 주문가결
OrderQty : Array [1..10] of char; // 주문수량
DealPrice : Array [1..10] of char; // 체결가격
DealQty : Array [1..10] of char; // 체결수량
RemainQty : Array [1..10] of char; //미체결수량
update_flag : char; // 정정취소여부
OriginOrderNo : Array [1..10] of char; // 원주문번호
end;
TR_5005_STRUCT = Packed Record
AcctNo : Array [1..14] of char; //계좌번호
ResultCode : Array [1.. 4] of char; //처리코드
ItemCount : Array [1.. 5] of char; //종목수
end;
위처럼 포인트를 선언하시구여..
Form_Create 이벤트 혹은 해당 구조체를 사용하시기 전에
Try
SetLength(10000, TR_5005_REPEAT_STRUCT); //긴가 민가해서.. SetLength(TR_5005_REPEAT_STRUCT, 10000) 이건가? 아참.. 기억이 가물가물..
Initialize(TR_5005_REPEAT_STRUCT); //요건 초기화.. 아님.. For문으로 초기화 하시는게 좋을듯..
Except
TR_5005_REPEAT_STRUCT := Nil;
ShowMessage('아띠!! 구조체에 메모리 할당이 안되네.. 메모리 좀 늘려봐염..');
End;
위처럼 하시는게 어떠실지..
지금 Delphi를 켜 놓고 실험을 하시 않았지만,
위 질문처럼 구조체에서 또 다른 구조체를 사용해본적이 없어서
확신 해 드리지 못하겠네여..
허나, 문법상으로는 문제가 없을듯...
그리고, SetLength로 할당한 메모리는 반드시 해제를 해 주셔야 합니다.
Finalize(TR_5005_REPEAT_STRUCT);
혹은
TR_5005_REPEAT_STRUCT := nil;
꼭 해주세염...
답변이 되었길 바랍니다..
아~~ 빨랑 일감하나 들어와야할텐데..
이겅.. 저의 투덜거림이었습니다..
^^;