如何清除Lazarus(或者Delphi)的任何输出文件?

时间:2013-10-29 02:06:26

标签: debugging lazarus

当我最近的Lazarus Pascal项目在2天前开始发出一个奇怪的CIRCULAR REFERENCE错误时,我感到难过。

我现在删除了项目的所有元素,只打开了LPR文件。当我按F9编译并运行时,我看到同样的错误。所以我怀疑有些旧的输出文件搞砸了。

如何识别和删除它们以便我的项目能够编译?

我正在使用Ubuntu 12.04和Lazarus 1.0.10 + PostgreSQL

万分感谢!

编辑:2013-11-02

我刚从TSUNAMI回来了!我尝试了很多东西,最后格式化了我的操作系统并重新回来了。新项目运作良好。但我对这个问题的旧项目仍然是一样的。它会触发循环引用错误:

stdctrls.pp(9,52) Fatal: Circular unit reference between StdCtrls and LCLIntf

有趣的是,这条线是BLANK。它之前和之后都有评论。我关心的是为什么?我的代码中没有使用LCLIntf。

编辑:2013-11-03

我注意到一件奇怪的事。我有一个项目的LPS文件。它有一些参考StdCtrls的条目。然后我将项目选项更改为NOT使用会话文件。相反,它仅使用LPI文件。但现在我在我的LPI文件中找到了相同的StdCtrls条目。我不知道为什么会这样。我打开了LPI文件的条目,引用了StdCtrls(甚至删除了备份文件)。但每当我在Lazarus打开它时,该条目就会重新进入。

这是我找到并删除的条目。

  <Unit29>
    <Filename Value="/usr/share/lazarus/1.0.12/lcl/stdctrls.pp"/>
    <UnitName Value="StdCtrls"/>
    <WindowIndex Value="0"/>
    <TopLine Value="1"/>
    <CursorPos X="52" Y="9"/>
    <UsageCount Value="10"/>
  </Unit29>

我坚信这是造成循环引用错误的原因。

关于我如何摆脱这个并修复我的项目的任何想法?

谢谢!

2 个答案:

答案 0 :(得分:0)

还有其他可能的原因。相互参照可能会导致看似稍纵即逝的行为(取决于编译顺序)。跨单元内联使其聚集。

尝试将其最小化为几个单位,然后使用相互引用(单位使用彼此,直接或作为USES周期的一部分),并首先禁用相关单位中的所有内联。

答案 1 :(得分:0)

尝试使用Shift-F9 - 它将运行 build ,它应该从头开始编译所有文件。如果这仍然无济于事,您可以尝试删除一些编译单元的.ppu个文件。但是,请注意不要删除编译所需的Lazarus自己的.ppu