如何更改VCL代码?

LaB*_*cca 4 delphi compilation delphi-xe2

我需要(做一些快速和肮脏的测试)修改的代码VariantsSysUtils.

我需要做什么才能"编译"这些变化?

我当然可以在IDE中打开这些单元,但是如果我更改它们并且我再次执行一个项目,我看不到那些单元被重新编译.

需要做什么?

Llo*_*oyd 7

问题是您需要针对"新"单元编译所有RTL/VCL.

而是修改相关单位的副本,并在您想要使用它们时将它们添加到项目中.Delphi应该使用它们而不是RTL/VCL中的那些.

  • 只要您只使用与Emba最初编译单元时使用的编译器选项相同的编译器选项来编译这些单元,只要您在单元的实现部分中进行更改,这将起作用. (7认同)
  • 如果使用运行时包,这也不起作用 (4认同)

Arn*_*hez 5

除非您不更改interface单元的一部分(即,仅修改implementation侧面),否则可以制作自己的RTL单元版本(只有System.pasSysInit.pas是例外,但这不在您的范围内-请访问我们的博客网站以获取相关信息)。这些单元的一些增强功能)。

你需要的是把自己的版本Variants.pas,并SysUtils.pas在项目中的搜索路径。将考虑它们而不是默认RTL。

但是请注意,您可能会轻易破坏任何东西。

出于测试目的,这是可以的,但是如果您要使用这些修改,则最好使用一些自动回归测试,并明确知道您在做什么。

请注意,您可以使用RTL单元的“调试”版本(来自项目选项),然后在官方源代码中逐步使用调试器。这可能会帮助您找到问题而又不触及消息来源。

如果更改interface单元的一部分,则必须重新编译所有调用已修改单元的单元-对于SysUtils和Variants,这几乎是所有RTL。