在我们的团队中,新程序员无法访问我们应用程序的所有源代码。只要他们必须访问仅依赖于类的程序表单,他们就可以访问源代码,一切都很好。当他们必须使用只有 .dcu 的单元中的其他类时,当 dcu 中的类更改其接口时,他们会收到 F2051 错误。
有没有一种干净的方法来获得两者?
- 对新程序员隐藏部分源代码的可能性
- 避免“隐藏”单元中的类更改时出现 F2051 错误
我搜索了一种将 Delphi 代码编译为中间表示的方法,即隐藏源代码但允许编译的方法,但我没有找到任何东西。
在我们的团队中,新程序员无法访问我们应用程序的所有源代码。只要他们必须访问仅依赖于类的程序表单,他们就可以访问源代码,一切都很好。当他们必须使用只有 .dcu 的单元中的其他类时,当 dcu 中的类更改其接口时,他们会收到 F2051 错误。
有没有一种干净的方法来获得两者?
我搜索了一种将 Delphi 代码编译为中间表示的方法,即隐藏源代码但允许编译的方法,但我没有找到任何东西。
你必须在接口更改后编译代码,并将新的 .dcu 分发给每个需要无源使用它的程序员,然后他们需要重新构建他们的应用程序。绝对没有其他方法可以做到这一点;如果接口发生变化,编译器需要它。
对于那些“隐藏”的单元,将.dcu与.pas一起放在源代码管理中,并确保它们已更新并同步。
“授权”开发人员将获取新的.pas,而下属只会看到和获取.dcu。
如果你真的想走这条拥有二等程序员的路线,你必须做随之而来的管理工作。
话虽如此,我个人更经常在追逐错误并试图了解正在发生的事情时不进入 VCL 源代码。
而且我真的不喜欢没有它(比如一些低级别的 Delphi SKU)
如果您真的想创建一个稳定的二进制单元,可以与您不信任的人共享以阅读您的源代码,为什么不将“秘密”位放入 DLL,然后从其余部分加载该 DLL编码。
它被称为“应用程序二进制接口”,既可以使用从 DLL 导出的普通旧 Pascal 程序本地完成,也可以使用 COM 接口和 COM 类型库完成。
Delphi 拥有 DLL 和 BPL 技术,可以帮助您创建不是源代码但具有稳定 ABI 的东西,这将帮助您避免任何听起来像您现在手头的疯狂小混乱。