<!--CodeS-->
type
// TForm1이 정의되어 있음
ManType=class
public
X, Y :integer;
L, K, B :integer;
BounX,BounY:integer;
Vx, Vy:integer;
Skip :boolean;
end;
ManRealType=class(ManType)
public
Mass: TLabel;
constructor Create(Owner:TComponent; LR:integer; Index:integer; MassColor:TColor; e:integer);
destructor Destroy;
end;
var
Man:array[1..2,1..200]of ManRealType;
Form1:TForm1;
constructor ManRealType.Create(Owner:TComponent; LR:integer; Index:integer; MassColor:TColor; e:integer);
begin
inherited Create;
Mass := TLabel.Create(Owner);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Man[1,1].Create(Form1, 1, i, clGreen, e);
end;
<!--CodeE-->
위와 같이 하였는데요...
(Form1에는 버튼 하나 달랑 올라가 있습니다)
트레이스를 밟아 보니까 Mass := TLabel.Create(Owner); 에서...
Access Violation error가 뜹니다.
도무지 감이 안 잡힙니다. 어떻게 해야 좋을까요?
지금 보기에 딱히 이거다 라고 설명 드리기엔 제가 너무 허접하여
약간의 도움이나마 될까 하여 말씀드리면
VCL을 생각하시면 답이 나올거 같습니다.
이상한부분이 Mantype는 아무런 클래스도 상속받지 않았고..
constructor도 선언되 있지 않은데..inherited 는 이상하구요..
Man[1,1].Create(Form1, 1, i, clGreen, e);
이것도 원래는 이런식아닌가요?
Man[1,1] := ManRealType.Create(Form1, 1, i, clGreen, e);
2차원 맨 포인터 배열이 있고 그배열에 객체를 생성시켜 그 포인터를 넘겨주고
그 포인터를 이용하여 객체를 제어합니다. 이런식의 모냥이 나와야 하는데...
(포인터라고 말해도 되는지 모르겠지만.제가보기엔 포인터 같음)
참 희안한 답변이지만 도움이 되길 바랍니다.