Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当并非所有程序员都可以访问完整的源代码时,如何避免Delphi致命错误F2051_Delphi - Fatal编程技术网

当并非所有程序员都可以访问完整的源代码时,如何避免Delphi致命错误F2051

当并非所有程序员都可以访问完整的源代码时,如何避免Delphi致命错误F2051,delphi,Delphi,在我们的团队中,新程序员无法访问应用程序的所有源代码。 只要他们必须访问仅依赖于他们可以访问源代码的类的程序表单,一切都是正常的。当他们必须使用来自只有.dcu的单元的其他类时,当dcu中的类更改其接口时,他们会得到F2051错误 有没有一个干净的方法可以同时得到这两个呢 对新程序员隐藏部分源代码的可能性 当隐藏单元中的类更改时,避免F2051错误 我寻找了一种将Delphi代码编译成中间表示形式的方法,即隐藏源代码但允许编译的方法,但我没有找到任何东西。您必须在接口更改后编译代码,并将新的.d

在我们的团队中,新程序员无法访问应用程序的所有源代码。 只要他们必须访问仅依赖于他们可以访问源代码的类的程序表单,一切都是正常的。当他们必须使用来自只有.dcu的单元的其他类时,当dcu中的类更改其接口时,他们会得到F2051错误

有没有一个干净的方法可以同时得到这两个呢

对新程序员隐藏部分源代码的可能性 当隐藏单元中的类更改时,避免F2051错误
我寻找了一种将Delphi代码编译成中间表示形式的方法,即隐藏源代码但允许编译的方法,但我没有找到任何东西。

您必须在接口更改后编译代码,并将新的.dcu分发给需要在无源代码的情况下使用它的每个程序员,然后他们需要重建他们的应用程序。绝对没有别的办法,;如果接口中有更改,编译器需要它。

对于那些隐藏的单元,请将.dcu与.pas一起放入源代码管理中,并确保它们已更新和同步。 授权开发人员将获取新的.pas,而下属将只查看并获取.dcu

如果你真的想走上拥有二等程序员的道路,你必须做与之配套的管理工作

也就是说,我个人更倾向于在追踪一个bug并试图了解发生了什么的时候不使用VCL源代码。
我真的不喜欢像一些低级别的Delphi SKU那样拥有它如果你真的想创建一个稳定的二进制单元,你可以与不信任的人共享来阅读你的源代码,为什么不把秘密位放入一个DLL,然后从代码的其余部分加载那个DLL呢

它被称为应用程序二进制接口,或者使用从DLL导出的普通旧pascal过程本机完成,或者使用COM接口和COM类型库完成


Delphi同时拥有DLL和BPL技术,可以帮助您创建非源代码的内容,但它有一个稳定的ABI,可以帮助您避免现在手头上出现的任何疯狂的小混乱。

这听起来是一个很好的工作场所。程序员不允许看到源代码的地方!DCU是您正在寻找的Intermediate代表。您只需在接口更改后更新程序员工作站中的所有dcu。“你可以很容易地实现自动化。”戴维费南,迪尔伯特·埃斯奎利的好地方^-^为什么不允许他们查看源代码,只是不提交任何更改?不向新程序员展示整个源代码,并期望他们做任何事情,而不是永远迷失和困惑,这在我看来似乎是愚蠢的。没有被简化的Delphi SKU。有一些较低级别的入门级产品不包含专业及以上SKU的所有功能,它们的售价较低,因为它们不包含专业及以上SKU的所有功能。如果您想要这些功能,请购买实际版本。如果你不想花钱,不要抱怨你没买的东西话虽如此,这不是抱怨软件生产商所做决定的地方,包括它会降低你回答的质量。@KenWhite,它并没有减少一个普遍的事实,即不向开发人员提供源代码被包括我在内的许多人认为是不聪明的。我一直认为,从D1开始就有德尔福的资料来源是Borland做出的最好的决定之一。。。另外,我并不是在抱怨我的特殊情况,因为我个人版本的Delphi大多是架构师版本的。我同意,虽然这可能会引起争议,但也不是评论德尔福SKU细分和价值的地方。不管怎样,还是更改了措辞,因为主要内容是读取源代码!;-在Delphi 1中,源代码是一个额外的附加组件,除了架构师/企业SKU之外,任何东西都不记得SKU名称;您必须为它支付与第一个版本Delphi Pro相同的费用。我的个人SKU一直是专业的,因为它有我需要的一切,或者我有第三方附加组件/组件。不过,我从来没有D1的来源;它附带了.int文件,因此您可以看到接口部分。我活了下来-使用DLL时,IDE将无法以与DCUs CodeInsight相同的方式显示单元接口。这就是关键所在。真正的接口二进制稳定或DLL导出接口是我建议中唯一公开的内容。但CodeInsight允许您显示可从编译DCU有效访问的内容,而这些内容在包含相同代码的DLL中是不可见的,这正是mjn提出的观点。你的问题也没有解决所问的问题;它提供了对替代解决方案的评论。