我正在处理delphi 7
和delphi 2006
的组件,该组件使用synopse中的SynTaskDialog.pas
,我已成功使用SynTaskDialog.pas
delphi 7
组件,但是当我尝试在delphi 2006
中使用它来创建组件包时。我收到错误
找到了同样的解决方案
引用:
我找到了两个解决方法:
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'
答案 0 :(得分:9)
你为什么不问项目论坛的问题?
解决方案可能会增强此开源单元的官方代码。
好的 - 它可以帮助我获得一些SO点。 ;)
AFAIK此“E2001”问题已经确定 - 请参阅this post,并且应该已在最新的主干中修复。这听起来与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);
现在是committed in the project trunk。
感谢您使用我们的开源组件!