forms - 当 Form2 尝试编辑 delphi 中的 form1 时,访问冲突

标签 forms delphi access-violation

例如,当我尝试做这样的事情时

form2.Edit1.text=form1.edit1.text

它给了我一个访问冲突错误。

form2 使用 form1 变量的方式是添加

uses Unit1; var Form1:Tform1

实现

该程序编译良好,没有错误,但当尝试从 form1 实际访问 edit1 时,它会因错误而崩溃。

编辑:

当我将unit1添加到“使用”列表中而不是在实现下而是在接口(interface)下时,它似乎正在工作

这意味着unit2可以编辑unit1,但我现在无法将unit2添加到unit1的界面的使用中 圆形单位引用

简而言之,这意味着

  • 单元2可以编辑/查看单元1
  • unit1 无法编辑/查看unit2

那么有没有一种方法可以在不创建由其他两个单元引用的第三帧的情况下实现这一点?

最佳答案

您的项目中有两个名为 Form1 的变量。 .dpr 文件中的代码创建一个 TForm1 并将引用保存在两个 Form1 变量中的一个中。然后,您将引用另一个未分配的 Form1

这解释了为什么您会遇到访问冲突。如何修复它?只需从 Unit2 中删除 Form1 变量即可。使用“在文件中查找”功能确保整个项目中只有一个 Form1Form2 等声明。

当您正确执行此操作时,您将可以毫无困难地让每个单元从实现部分使用另一个单元,并且不会出现循环引用问题。

为了更好地学习和理解这一点,我建议您阅读 .dpr 文件以了解全局变量是如何初始化的。我还建议您阅读有关范围解析的 Delphi 语言指南部分,以了解编译器如何解决在同一位置出现两个相同名称的情况。

关于forms - 当 Form2 尝试编辑 delphi 中的 form1 时,访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9171860/

相关文章:

javascript - jquery/ajax 表单提交不起作用

javascript 表单验证 - 仅字母

algorithm - Delphi 图形的非递归深度优先搜索

delphi - 显示 TLabel 中的最后一行

c++ - 在大小为 n 的 3D 数组中有效检查相邻体素

c++ - 访问冲突读取位置 0x000000004

python - 增强 is_valid() 但有异常

multithreading - 从互联网下载文件,同时能够随时中止下载

delphi - 将文字转换为 PChar/PAnsiChar

html - 如何将 Bootstrap bg-x(例如 bg-danger)类添加到输入文本框?