Обновление до HTMLHelpViewer в DELPHI XE (не удается найти HTMLHelpViewer.pas)

Я перехожу с Delphi 6 на Delphi XE. В Delphi 6 я использовал файлы справки HTML (.chm) и использовал StoHtmlHelp, чтобы сделать так, чтобы я мог вызывать контекстно-зависимую справку, как мы раньше вызывали файлы .hlp. Я перехожу на Delphi XE, поэтому мне нужно использовать встроенную поддержку HTML.

Я знаю, что должен добавить HTMLHelpViewer в раздел uses проекта, но когда я это сделаю, компилятор получит предупреждение о том, что он не может найти файл.

Не удалось скомпилировать использованный модуль HTMLHelpViewer.pas.

Кто-нибудь знает, почему Delphi не находит этот файл по умолчанию? Он должен быть встроенным.


person Daisetsu    schedule 28.02.2011    source источник


Ответы (2)


На самом деле вам не нужно добавлять его в раздел uses файла .dpr - вам просто нужно использовать его из какого-либо модуля в вашем проекте.

Сказав это, вы на самом деле можете предпочесть добавить его в свой .dpr файл, и если да, то сделайте это следующим образом:

uses
  Forms,
  HtmlHelpViewer,
  MyUnit in 'MyUnit.pas',

Я предполагаю, что у вас есть что-то вроде этого:

uses
  Forms,
  HtmlHelpViewer in 'C:\Program Files\Borland\Delphi6\Source\VCL\HtmlHelpViewer.pas',
  MyUnit in 'MyUnit.pas',

Это не удастся, потому что вы просите XE скомпилировать исходный код D6.

Для модулей RTL / VCL лучше не указывать путь к файлу и позволить компилятору найти его (он знает, где искать).

person David Heffernan    schedule 28.02.2011
comment
На самом деле компилятор не знает, где искать. Я разместил этот вопрос после того, как попробовал именно то, что вы упомянули. Я добавил HTMLHelpViewer в предложение using без информации о пути, и Delphi не справился с этой ошибкой. - person Daisetsu; 01.03.2011
comment
Хорошо, избавьтесь от версии файла, которую компилятор связывает для компиляции, и просто позвольте ей ссылаться на dcu, поставляемый с delphi. Тогда вы обнаружите, что компилятор знает, где искать! - person David Heffernan; 01.03.2011
comment
Мне пришлось удалить файл .pas И .dcu .. но он РАБОТАЕТ. Спасибо, Дэвид. - person Daisetsu; 01.03.2011
comment
На мой взгляд, вы должны принять другой ответ, поскольку я считаю, что второй пункт Марджана описывает вашу проблему. - person David Heffernan; 01.03.2011

Невозможность скомпилировать файл и не найти файл - это не одно и то же. Если Delphi пытается скомпилировать HTMLHelpViewer.pas, вы должны либо:

  • иметь исходные папки vcl на пути к вашей библиотеке (не рекомендуется), или
  • другой файл HTMLHelpViewer.pas находится где-то на пути к вашей библиотеке, этот путь предшествует стандартной папке lib Delphi, и этот файл HTMLHelpViewer.pas содержит то, что не устраивает Delphi XE.

Первый вариант маловероятен, и было бы действительно очень странно, если бы Delphi не смог скомпилировать один из своих модулей (кроме system.pas).

Второе кажется более вероятным ... И если бы этот модуль использовался для компиляции, жалобы со стороны Delphi XE вполне могли быть связаны с различиями между Delphi 6 и Delphi XE.

person Marjan Venema    schedule 28.02.2011
comment
Третья возможность: компилятор Delphi может найти HTMLHelpViewer.dcu, но он скомпилирован другой версией компилятора. Компилятор XE хочет, чтобы источник создал новый .DCU, но не может найти его в поиске или пути к библиотеке. (Например, это может произойти, если у вас остался .DCU D6, и он был найден компилятором до того, как будет найдена правильная версия XE, и XE не может найти исходный файл.) - person Ken White; 01.03.2011