Vcl.Printers.pas (888): W1025 Recurso de idioma não suportado: 'atributo personalizado'
Estou tentando consertaroutro bug VCL; desta vez emVcl.Printers.pas
.
Por enquanto, estamos fazendo isso copiando os arquivos de origem VCL com erros para outra pasta no caminho da biblioteca Delphi e aplicando correções nesses arquivos. Aplicamos a correção paraTPrinter.SetPrinter
.
Mas existem seis métodos no arquivo que são decorados com atributos:
[PrintingPermission(SecurityAction.LinkDemand, Level=PrintingPermissionLevel.AllPrinting)]
procedure TPrinter.Abort;
begin
...
[PrintingPermission(SecurityAction.LinkDemand, Level=PrintingPermissionLevel.AllPrinting)]
procedure TPrinter.EndDoc;
begin
...
[PrintingPermission(SecurityAction.LinkDemand, Level=PrintingPermissionLevel.AllPrinting)]
procedure TPrinter.NewPage;
begin
...
[PrintingPermission(SecurityAction.LinkDemand, Level=PrintingPermissionLevel.AllPrinting)]
{$IF DEFINED(CLR)}
procedure TPrinter.SetPrinter(ADevice, ADriver, APort: string; ADeviceMode: IntPtr);
{$ELSE}
procedure TPrinter.SetPrinter(ADevice, ADriver, APort: PChar; ADeviceMode: THandle);
{$ENDIF}
var
...
[PrintingPermission(SecurityAction.LinkDemand, Level=PrintingPermissionLevel.AllPrinting)]
function SetPrinter(NewPrinter: TPrinter): TPrinter;
begin
...
Cada um desses métodos causa um aviso:
[dcc32 Warning] Vcl.Printers.pas (968): W1025 Recurso de idioma não suportado: 'atributo personalizado'[dcc32 Warning] Vcl.Printers.pas (978): W1025 Recurso de idioma não suportado: 'atributo personalizado'[dcc32 Warning] Vcl.Printers.pas (1015): W1025 Recurso de idioma não suportado: 'atributo personalizado'[dcc32 Warning] Vcl.Printers.pas (1026): W1025 Recurso de idioma não suportado: 'atributo personalizado'[Aviso dcc32] Vcl.Printers.pas (1080): W1025 Recurso de idioma não suportado: 'atributo personalizado'[dcc32 Warning] Vcl.Printers.pas (1599): W1025 Recurso de idioma não suportado: 'atributo personalizado'Eu poderia apenas remover os atributos. Ou presumivelmente existe uma maneira de suprimir os avisos. Mas suponho que os atributos adicionados pelo Embarcadero tenham algum objetivo.
Qual é o caminho para tornar a linguagemApoio, suporte a característicaatributos customizados?Por que não é um aviso na fonte VCL?Por que a fonte VCL tem permissão para usá-lo quando não estou?O que esses atributos estão fazendo?Quem lê esses atributos?Há problemas com a remoção deles?Se não há problemas em removê-los, por que eles estão lá?Estou realmente perguntando:
Como faço para funcionar?
Mas eu também adoraria saber:
Por que não está funcionando?
E aporque torna uma pergunta muito mais útil, mas oconsertá-lo seria bom.
Bônus Chattersim, planejamos eventualmente pensar na possibilidade de investigar o uso dedesvios. Embora, presumivelmente, o método desviado ainda deva ter o atributo (caso contrário, por que o atributo existiria)?