Mik*_*ail 4 arrays delphi delphi-7 access-violation
我提前为新手问题道歉,但为什么我的代码出现"访问冲突"错误(在"Create(SelectorForm);"行上)?我尝试使用主窗体作为所有者,但它没有任何区别.
var
SelectorForm: TSelectorForm;
ArrayOfImages: Array [1..10] of TImage;
implementation
procedure TSelectorForm.FormCreate(Sender: TObject);
var
Loop: Byte;
begin
for Loop := 1 to 10 do
begin
with ArrayOfImages[Loop] do
begin
Create(SelectorForm);
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
Hem*_*ant 17
问题是你实际上是这样做的:
var
imageVariable: TImage;
begin
imageVariable.Create (ParentForm);
end;
Run Code Online (Sandbox Code Playgroud)
这是错误的,因为正在对尚未分配的变量调用"Create"方法.
你应该做这个:
var
imageVariable: TImage;
begin
imageVariable := TImage.Create (ParentForm);
try
//use the object
finally
FreeAndNil (imageVariable);
end;
end;
Run Code Online (Sandbox Code Playgroud)
或者更具体地说,在您的代码中
for Loop := 1 to 10 do
begin
ArrayOfImages[Loop] := TImage.Create (Self);
end;
Run Code Online (Sandbox Code Playgroud)
不要忘记释放物体
编辑:接受@ andiw的评论并收回释放对象的提示.EDIT2:接受@ Gerry的评论并使用Self作为所有者.