안녕하세요.
델파이 1년된 초보입니다.
나름 5가지 이상의 벡터 처리 프로그램들을 만들어 봤는데 이번에는 제법 규모가 큰 작업을 해보려구요.
구조체 배열의 주소를 다른 구조체에서 포인터로 잡아서 사용하고 싶어요.
<!--CodeS-->
TComponent = packed record
Name : String;
Pad : Array[0..999] of String;
PadCount : Integer;
end;
TiComponent = packed record
Name : String;
X, Y : Integer;
Component : ^TComponent;
end;
var
Comonent : Array[0..1000] of TComponent;
iComponent : Array[0..1000] of TiComponent;
로 선언한 뒤에
Component[0].Name := '7400';
Component[0].Pad[0] := 'PAD1';
Component[0].Pad[1] := 'PAD2';
Component[0].Pad[2] := 'PAD3';
Component[0].Pad[3] := 'PAD4';
Component[0].PadCount := 4;
Component[1].Name := '7404';
Component[1].Pad[0] := 'PAD1';
Component[1].Pad[1] := 'PAD2';
Component[1].Pad[2] := 'PAD3';
Component[1].Pad[3] := 'PAD4';
Component[1].Pad[4] := 'PAD5';
Component[1].Pad[5] := 'PAD6';
Component[1].PadCount := 6;
Component[2].Name := '7406';
Component[2].Pad[0] := 'PAD1';
Component[2].Pad[1] := 'PAD2';
Component[2].Pad[2] := 'PAD3';
Component[2].Pad[3] := 'PAD4';
Component[2].Pad[4] := 'PAD5';
Component[2].PadCount := 5;
iComponent[0].Name := 'U1';
iComponent[0].X := 100;
iComponent[0].Y := 200;
iComponent[0].Component := @Component[0];
ShowMessage(IntToStr(iComponent[0].Component^.PadCount)); <------ A
<!--CodeE-->
A에서 PadCount의 숫자인 4를 표시해야 하는데 안돼네요. ShowMessage(IntToStr(iComponent[0].Component.PadCount));로 바꾸어도 마찬가지 이구요.
어떻게 해야 하나요?
동적으로 생성하실게 아니면 배열의 크기를 줄이세요.