2016-09-23 22 views
7

У меня есть этот кусок кода:

INTERFACE 

{$WARN SYMBOL_PLATFORM OFF} 
USES 
    Winapi.Windows, etc, {$IFDEF MSWINDOWS}Vcl.FileCtrl, {$ENDIF} System.IniFiles; 
{$WARN SYMBOL_PLATFORM ON} 

Компилятор показывает:

[dcc32 Warning] W1005 Unit 'Vcl.FileCtrl' является , специфичный для платформы

, хотя существует {$ WARN SYMBOL_PLATFORM OFF}.
Почему?

ответ

10

Вы используете неправильную директиву. SYMBOL_PLATFORM управляет предупреждениями для символов обозначен специфической платформой. Ваше предупреждение относится к блоку .

Контролируйте эти предупреждения с помощью UNIT_PLATFORM.

Весь блок отмечен (с использованием директивы подсказки платформы) как тот, который содержит материал, который может быть недоступен на всех платформах. Если вы пишете приложения с несколькими устройствами, устройство может вызвать проблему. Например, блок, который использует объекты, определенные в OleAuto, может быть помечен с помощью директивы PLATFORM.

Директива компилятора $ WARN UNIT_PLATFORM ON/OFF включает или выключает все предупреждения о директиве платформы в единицах, где указана директива платформы.


Там действительно простой способ для вас, чтобы решить эту проблему для себя. Взгляните на две темы документации, которые я связал выше. Их названия:

  • W1002 Символ '% s' специфичен к платформе (Delphi)
  • W1005 Unit '% s' является специфичным для платформы (Delphi)

Предупреждение компилятора что вы получили имена как предупреждение W1005. Это все, что вам нужно знать, чтобы определить, какую директиву использовать для управления им. Если у вас возникли проблемы с поиском их, просто выполните поиск имени предупреждения W1005 в этом случае. Или обратитесь к documentation that lists them all.

 Смежные вопросы

  • Нет связанных вопросов^_^