我有一个已编译的pbd文件,我需要对其进行编辑并对代码进行非常小的更改。
我尝试使用HEX编辑器,但除非我的设置有误,否则它似乎不起作用?
该文件是使用PowerBuilder 6.5.1构建的,我有PowerBuilder 6.5。我尝试加载任何窗口对象时出错。 PB中加载窗口对象的两个版本之间真的存在很大差异吗?如果我使用PBBrowse,我可以看到窗口和对象属性,并可以在最后一种情况下重建窗口对象。
我还使用了pbdumper,我可以从pbd中提取源文件(一旦我将文件重命名为.pbl)。但是有没有另一种方法可以重建所有源文件并使用我需要的更改成功生成更新的.pbd?
答案 0 :(得分:1)
首先是好消息:你不需要为PB 6.5.x转储或导入任何东西。只需将PBD重命名为PBL,就可以获得完美的PBL。旧的PowerBuilder PBD 是 PBL并包含源代码。较新的PBD也是PBL,但正如Seki所说,他们已经删除了源代码。
现在是坏消息。我们很多使用过PowerBuilder多年的人都很难学到两件事。首先也是最重要的是,所有对象都需要使用完全相同的PB构建进行编译,并且需要使用PB运行时的构建来运行它们。如果你不这样做,你可能会得到非常奇怪的行为,或者应用程序可能会崩溃。其次,最好将所有内容编译在一起并分发完整版本。您可能已经注意到,在IDE中修改对象时,通常需要在应用程序正常工作之前重新编译引用它的其他对象。将编译后的代码放在PBD或EXE中不会改变这一点。有些人确实成功分发了一些他们的PBD,但是你需要一个完整的回归测试才能知道它是否安全。能够执行此操作的应用程序通常非常谨慎地控制PBL之间的依赖关系。
答案 1 :(得分:0)
如果您可以使用pbdumper
获取某些源文件,则可以创建新的.pbl
文件并将.sr?
文件导入其中以进行重新编译。
但奇怪的是,您可以从.pbd
文件中获取一些源文件,因为它们会被编译剥离(实际上在编译.pbl
时,会创建相应的.pbd
并且仅除非在部署选项中未选择.pbl
来生成.pbd
,否则将编译后的对象写入其中,然后将编译后的对象放入.exe
- 这是一个win32 PE文件,在其末尾包含一个.pbd
的附加覆盖图。
我怀疑它可能已被错误重命名为.pbd
。