delphi 2006, ошибка компиляции SynTaskDialog в пользовательском компоненте
Я работаю над компонентом для delphi 7
а также delphi 2006
компонент использует SynTaskDialog.pas
из синопсиса, я успешно использовал SynTaskDialog.pas
в delphi 7
компонент, но когда я пытаюсь использовать его в delphi 2006
создать пакет компонентов. я получаю ошибку
я нашел решение для того же самого на synopse.info/forum
Цитата:
Я нашел два обходных пути: либо
- заменить массивы указателей на строковые массивы, такие как
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);
Это сейчас зафиксировано в стволе проекта.
Спасибо за использование нашего компонента с открытым исходным кодом!