delphi 2006, ошибка компиляции SynTaskDialog в пользовательском компоненте

Я работаю над компонентом для delphi 7 а также delphi 2006компонент использует SynTaskDialog.pas из синопсиса, я успешно использовал SynTaskDialog.pas в delphi 7 компонент, но когда я пытаюсь использовать его в delphi 2006 создать пакет компонентов. я получаю ошибку

я нашел решение для того же самого на synopse.info/forum


Цитата:

Я нашел два обходных пути: либо

  1. заменить массивы указателей на строковые массивы, такие как
  TD_ICONS_IDENT: array[TTaskDialogIcon] of string =(
    '', SMsgDlgWarning, SMsgDlgConfirm, SMsgDlgError, SMsgDlgInformation,
    '', SMsgDlgInformation);

и удалите некоторые вызовы LoadResString или

2. замените массивы указателей такими функциями, как

  GetIconIdent(TTaskDialogIcon): Pointer

но даже после этого я не могу скомпилировать пакет для компонента. и эти ошибки приходят

 [Pascal Error] E2201 Need imported data reference ($G) to access 'SMsgDlgOK' from unit 'SynTaskDialog'
 [Pascal Error] E2201 Need imported data reference ($G) to access 'SMsgDlgYes' from unit 'SynTaskDialog'
 [Pascal Error] E2201 Need imported data reference ($G) to access 'SMsgDlgNo' from unit 'SynTaskDialog'
 [Pascal Error] E2201 Need imported data reference ($G) to access 'SMsgDlgCancel' from unit 'SynTaskDialog'
 [Pascal Error] E2201 Need imported data reference ($G) to access 'SMsgDlgRetry' from unit 'SynTaskDialog'
 [Pascal Error] E2201 Need imported data reference ($G) to access 'SCloseButton' from unit 'SynTaskDialog'

1 ответ

Решение

Почему вы не задали вопрос на форуме проекта?

Решение может улучшить официальный код этого модуля с открытым исходным кодом.

ОК - это может помочь мне набрать немного ТА баллов.;)

AFAIK эта проблема "E2001" уже была обнаружена - см. Этот пост и должна была быть исправлена ​​в последней магистрали. Это то, что звучит для работы с Delphi 7, но не с Delphi 2006.

Вот потенциальное решение этой ошибки компилятора:

Определите такую ​​функцию:

function IconMessage(Icon: TTaskDialogIcon): string;
begin
  case Icon of
    tiWarning:   result := SMsgDlgWarning;
    tiQuestion:  result := SMsgDlgConfirm;
    tiError:     result := SMsgDlgError;
    tiInformation, tiShield: result := SMsgDlgInformation;
    else result := '';
  end;
end;

Для использования как таковой:

if Inst='' then
  Inst := IconMessage(aDialogIcon);

Это сейчас зафиксировано в стволе проекта.

Спасибо за использование нашего компонента с открытым исходным кодом!

Другие вопросы по тегам