gpt4 book ai didi

Delphi:TImage.Create 导致访问冲突

转载 作者:行者123 更新时间:2023-12-03 15:16:43 26 4
gpt4 key购买 nike

对于新手问题,我提前表示歉意,但为什么下面的代码(在“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;

最佳答案

问题是你正在有效地这样做:

var
imageVariable: TImage;
begin
imageVariable.Create (ParentForm);
end;

这是错误的,因为正在对尚未分配的变量调用“Create”方法。

你应该这样做:

var
imageVariable: TImage;
begin
imageVariable := TImage.Create (ParentForm);
try
//use the object
finally
FreeAndNil (imageVariable);
end;
end;

或更具体地说,在您的代码中:

for Loop := 1 to 10 do
begin
ArrayOfImages[Loop] := TImage.Create (Self);
end;

不要忘记释放对象

编辑:接受@andiw的评论并收回释放对象的提示。编辑2:接受@Gerry的评论并使用Self作为所有者。

关于Delphi:TImage.Create 导致访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1036590/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com