关注the question,我正在尝试修改Indy10(IdHTTPProxyServer.pas)的源代码。但是没有重新编译indy10项目...我的IDE是XE2,以下是我做的步骤..
删除包“Indy 10 Core Design Time”和“Indy 10 Protocols Design Time” 在菜单 - >组件 - >安装包
打开IndyProtocols.dpk
在IdHTTPProxyServer.pas中进行更改
编译
然后有时它会显示错误“rtl160.bpl中的访问冲突”,有时它会在XXXXXX的coreide160.bpl中显示错误“异常xxx(任何组件)”
由于我对开发环境并不熟悉,所以我完全不明白有什么问题......我们将不胜感激。
由于
感谢所有回复。您的所有建议都让我更加了解开发环境。最后,我接受@Marcus Adams的答案,因为该项目中有多个开发人员。最好不要更改IDE的源文件。
答案 0 :(得分:3)
通常,当我更改源代码时,我将修改后的源文件保存到我的项目文件夹中。这样,只需重新编译该单元。
如果您更改了特定的.pas文件,只需将其保存到项目文件夹并重新编译即可。保持原始的Delphi(和Indy)源文件不变。
这也使得将来更容易更新,因为您的更改不会在更新后丢失,并且您的更改不会影响其他项目。
答案 1 :(得分:1)
有几个VCL设计时包(与DataSnap有关)链接到捆绑版本的Indy。如果您要更新indy,则需要执行以下操作:
只有这样才能编译新版本的Indy。
答案 2 :(得分:1)
您提到的错误都不是编译器错误。它不太可能是由编译器本身引起的。它们可能来自调用链中的其他位置,直到编译。
短期解决方案是从命令行进行编译。 MSBuild是Delphi在引擎盖下使用的构建引擎。
cd
将目录更改为IndyProtocols.dpk msbuild IndyProtocols.dpk /target:Build /p:config=Release
如果您想要执行调试版本,只需将/p:config=Release
更改为/p:config=Debug
即可。请注意,使用msbuild时情况很重要,因为项目文件是xml,区分大小写。
此外,您应该尽量避免直接对IDE附带的库进行更改。如果您在提供的库中发现了一个需要针对特定项目修复的错误,通常可以将违规文件复制到项目的文件夹中并在那里进行更改。您还可能需要复制其他几个相关文件。如果您采用这种方法,编译器将通知您需要复制哪些依赖项,并出现Unit * was compiled with a different version of *.*
现在,如果您真的想调试IDE,可以尝试使用整个IDE中使用的rtl
和coreide
包,并将它们编译为发行版本(无调试信息),因此可能很难确定导致你所看到错误的原因。
无论如何,您可以在项目管理器中加载IndyProtocols.dpk来运行IDE的第二个实例。然后使用第一个IDE实例中的Run > Attach to Process
将调试器附加到第二个IDE实例。之后,尝试从第二个IDE实例构建IndyProtocols.dpk。如果一切按预期进行,调试器将捕获错误并让您在它们发生的位置中断,以便您可以四处搜寻。
答案 3 :(得分:1)
您可以跳过组件/包编译步骤,只需在运行时创建Indy组件。
将Indy Lib核心/协议/系统路径添加到项目搜索路径,您就完成了。