Конвертировать константу DeDe в правильное объявление или другой инструмент извлечения интерфейса? - PullRequest
1 голос
/ 26 мая 2010

Я использую DeDe для создания API (интерфейса), к которому я могу скомпилировать. (Строго правдоподобно: пока мы ждем, пока поставщик выпустит версию D2010 в течение двух месяцев, мы можем по крайней мере получить компиляцию нашего приложения ...)

Мы остановим все методы.

Деде генерирует постоянные объявления, подобные этим:

  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 Ответ

6 голосов
/ 26 мая 2010

Это строки. Первые четыре байта являются счетчиком ссылок, который для строковых литералов всегда равен -1 ($ ffffffff). Следующие четыре байта являются количеством символов. Затем идут символы и нулевой терминатор.

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

Вам не нужно «сомневаться», используются ли эти константы где-либо. Вы можете подтвердить это опытным путем. Скомпилируйте ваш проект без этих констант. Если он компилируется, то они не используются.

Если ваш проект не компилируется, тогда эти константы должны использоваться где-то в вашем коде. Исходя из контекста, вы можете предоставить свои собственные объявления. Если константа используется как строка, тогда объявите строку; если оно используется как целое число, тогда объявите целое число.

Другой вариант - загрузить проект в версии Delphi, совместимой с имеющимися у вас DCU. Используйте завершение кода, чтобы IDE отображала константу и ее тип.

...