Извините, что на барже так поздно после битвы (на самом деле 5 лет спустя), но я потратил так много времени на эту конкретную проблему, что я решил поделиться тем, что видел и что сделал решить это:
2 машины (win7 64 / win 8.1), тот же delphi 7 (та же версия, та же сборка), один и тот же activeX (назовите его MapX) с одинаковыми .lic файлами, содержащими ключ из 59 символов:
uQnZi2sFw22L0-MRa8pYX-1E2P8065-5N5M3459-3C934220-04969-6562
тот же импорт, производящий 2 немного отличающихся TLB.
Один работает: (на win 8.1) содержит это в процедуре TMap.InitControlData:
const
CLicenseKey: array[0..61] of Word = ( $0075, $0051, $006E, $005A, $0069, $0032, $0073, $0046, $0077, $0032, $0032
, $004C, $0030, $002D, $004D, $0052, $0061, $0038, $0070, $0059, $0058
, $002D, $0031, $0045, $0032, $0050, $0038, $0030, $0036, $0035, $002D
, $0035, $004E, $0035, $004D, $0033, $0034, $0035, $0039, $002D, $0033
, $0043, $0039, $0033, $0034, $0032, $0032, $0050, $0030, $002D, $004D
, $0030, $0034, $0039, $0036, $0039, $002D, $0036, $0035, $0036, $0032
, $0000);
, что соответствует 61 символу
uQnZi2sFw22L0-MRa8pYX-1E2P8065-5N5M3459-3C93422P0-M04969-6562
TLB, который не работает (win 7 64), содержит это вместо:
const
CLicenseKey: array[0..2] of Word = ( $0050, $004D, $0000);
, что переводится как ключ с двумя символами
PM
Замена одной константы другой и перекомпиляция компонента решили мою проблему. Я действительно не знаю, что случилось. Я просто знаю, что Import / TLB создал плохой файл .pas, который можно исправить вручную.