将DeDe常量转换为有效声明或其他接口提取工具?

时间:2010-05-26 18:04:38

标签: delphi decompiling

我正在使用DeDe创建一个我可以编译的API(接口)。 (严格合法:当我们等待供应商在两个月内交付D2010版本时,我们至少可以让我们的应用程序编译......)

我们将剔除所有方法。

Dede会发出如下的常量声明:

  LTIMGLISTCLASS = 
    00: ÿÿÿÿ....LEADIMGL|FF FF FF FF 0D 00 00 00 4C 45 41 44 49 4D 47 4C|
    10: IST32.          |49 53 54 33 32 00|;

  DS_PREFIX = 
    0: ÿÿÿÿ....DICM.|FF FF FF FF 04 00 00 00 44 49 43 4D 00|;

我如何将这些转换为可编辑的声明?

理论上,我并不关心实际值,因为我怀疑它们在任何地方都有用,但我想让它们的大小正确。这些整数,LongInts还是???

欢迎使用DeDe的任何其他提示。

1 个答案:

答案 0 :(得分:6)

这些是字符串。前四个字节是引用计数,对于字符串文字,始终为-1($ ffffffff)。接下来的四个字节是字符数。然后是字符和空终止符。

const
  LTIMGLISTCLASS = 'LEADIMGLIST32'; // 13 = $0D characters
  DS_PREFIX = 'DICM'; // 4 = $04 characters

您不必“怀疑”这些常量是否在任何地方使用。你可以凭经验证实。编译没有这些常量的项目。如果它编译,那么它们就不会被使用。

如果您的项目没有编译,那么必须在代码中的某处使用这些常量。根据上下文,您可以提供自己的声明。如果常量像字符串一样使用,则声明一个字符串;如果它像整数一样使用,则声明一个整数。

另一个选择是将项目加载到与您拥有的DCU兼容的Delphi版本中。使用代码完成使IDE显示常量及其类型。