2010-02-12 2 views
1

Я пытаюсь избавиться от множества предупреждений в проекте после его преобразования из BDS 2006 в Delphi 2009.Почему MSHTML_TLB.pas создает предупреждения?

Проект нуждается в библиотеке типов с именем MSHTML_TLB. В исходный файл mshtml_tlb.pas невероятно большой файл (около 16Мб и> 440.000 строк кода), который генерируется, когда Type Library импортируется в Delphi 2009.

Этот файл производит много предупреждений при создании проекта:
W1010 Method 'ToString' hides virtual method of base type 'TObject'

Поскольку сам Delphi создал этот файл, мне интересно, почему возникают эти предупреждения, и если я просто должен их игнорировать? Если да, есть ли способ отключить этот вид предупреждения только для этого файла?

ответ

3

Delphi представила этот виртуальный метод в TObject. Ваше объявление ToString в производном классе не использует переопределение, поэтому метод ToString TObject больше не доступен. Добавление переопределения к методу ToString должно решить проблему, если вы не указали свой метод по-разному.

+0

В тексте кода проекта нет объявлений ToString. MSHTML_TLB используется только для сохранения растрового изображения компонента TWebBrowser. Даже если я возьму весь код, связанный с MSHTML_TLB, просто оставьте предложение uses, я получаю те же предупреждения. – Holgerwa

+1

Holger, если вы импортировали библиотеку типов, и этот код объявляет ToString, то там * есть * объявление ToString в вашем коде. (Просто потому, что вы сами не писали это, не означает, что вы беспомощны, когда есть проблема с этим. Попытайтесь получить это за своим боссом.) Блок включен в ваш проект, поэтому он составлен независимо от того, используй это. Предупреждения приходят на компиляцию, а не на использование. Либо «переопределить», либо «повторно ввести» метод ToString в блоке импорта, чтобы исправить предупреждение. –

2

Запись в начале файла MSHTML_TLB.pas эту строку (выделено жирным шрифтом):

unit MSHTML_TLB; 
{$WARNINGS OFF}

и в конце:

{$WARNINGS ON} 
end.
+2

Директивы компилятора сбрасываются в начале каждого блока в любом случае. Нет необходимости включать их обратно в конце устройства. –

+0

В Delphi 2007 это, к сожалению, важно (я могу отправить пример). В Delphi 2010 теперь так же, как вы пишете. – 2010-02-13 21:22:56

0

В крайнем случае, вы можете скрыть предупреждения. В Delphi 2010 это в Project Options/Delphi Compiler/Hints and Warnings. Я думаю, что это особое предупреждение: «Переобучение символа скрывает член в базовом классе».

0

Запуск Delphi.

В меню "Component" в главной панели инструментов выберите "Импорт ActiveX Control ..." В списке прокрутки и выберите "Microsoft HTML Object Library".

"Имена классов" следует указать "TScriptlet".

Нажмите «Установить ...», затем нажмите «OK » на «Установите» форму, которая появляется и «Yes» на подтверждающей строке.

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