gpt4 book ai didi

forms - 从XE8中的表单标签分配给RadioGroup标签会导致访问冲突

转载 作者:行者123 更新时间:2023-12-03 18:36:07 26 4
gpt4 key购买 nike

我最近从XE4升级到XE8,并且在向无线组分配itemindex时遇到访问冲突。我很好奇为什么在XE4中能行而在XE8中却行不通。当主程序启动时,所有表单都已创建。该代码在调试时工作正常,但在独立运行时会引发异常。

with TravelBookingForm do begin
try
rg1.itemindex:=tag-1;//not sure which causes the access violation
except
on E : Exception do
begin
showMessage(E.Message); //access violation message is shown
end;
rg1.tag := 0;
end;
end;


注意:我省略了不是相关的代码

最佳答案

因此,经过更多测试后,我可以确认rg1不是nil,并且它是导致访问冲突的项目。


如果rg1不是nil并且导致访问冲突,那么最合理的解释是rg1指向已释放的内存。这与观察到的错误有时(在调试器外部)而不是其他(在调试器下)发生的观察结果相符。

因此,您的程序在某个时候销毁了表单,然后再引用该表单。

显然,这是程序中的错误,您将需要确保在销毁表单后再也不要引用它们。不幸的是,IDE鼓励您在启动时创建所有表单,并将引用保存在全局变量中。这使得拥有陈旧的引用太容易了。

如果使用了FastMM的完整调试版本,则当您尝试访问已释放的内存时,该工具将能够向您发出警告。

关于forms - 从XE8中的表单标签分配给RadioGroup标签会导致访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30091455/

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