Ошибка в Delphi 2009? -> * .res не найден в пути поиска проекта (работает в Delphi 2006) - PullRequest
6 голосов
/ 22 апреля 2009

У меня проблема с миграцией с Delphi 2006 на Delphi 2009. Проект, использующий JVCL, жалуется на отсутствие jvconsts.res. Файл определенно там. Путь поиска проекта включает каталог, в котором находится файл. (Примечание: в моем глобальном пути поиска нет JVCL, чтобы сделать его более переносимым)

Но файл должен быть найден, поскольку Delphi Help говорит:

"... компоновщик ищет .res файлы [...] в каталогах указывается в поле ввода Путь поиска на странице каталогов / условий диалогового окна "Параметры проекта" "

Это не проблема JVCL: минималистичная программа показывает это:

Представьте себе эту структуру каталогов:

C:\Test\ResTest.dpr
C:\Test\Res\Test.res

Вот ResTest.dpr:

program ResTest;

{$R test.res} // not found even if "c:\Test\Res" is in project search path

begin
end.

Это прекрасно компилируется в Delphi 2006, но не в Delphi 2009. После некоторых поисков я нашел способ сообщить Delphi, где находится файл: путь поиска по гобалу или параметр -R с помощью компилятора командной строки.

Когда я пишу это, я подхожу ближе к реальной проблеме: в Delphi 2006 .cfg-файл содержит строки:

-I"c:\Test\Res"
-U"c:\Test\Res"
-R"c:\Test\Res"

В основном он копирует значения из пути поиска проекта в 3 опции командной строки, и поэтому он гарантирует, что параметр -R имеет правильные значения.

В Delphi 2009 (я установил многословность вывода компилятора как «debug»), я получаю полученную командную строку из IDE:

Если каталог (c: \ Test \ Res) включен в путь поиска проекта:

dcc32.exe --no-config -M -Q -ID:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib" -LE"C:\Users\Public\Documents\RAD Studio\6.0\Bpl" -LN"C:\Users\Public\Documents\RAD Studio\6.0\Dcp" -O"c:\program files\codegear\rad studio\6.0\Lib" -R"c:\program files\codegear\rad studio\6.0\Lib" -UD:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib" -K00400000   ResTest.dpr

Если каталог включен в глобальный путь поиска

dcc32.exe --no-config -M -Q -ID:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -LE"C:\Users\Public\Documents\RAD Studio\6.0\Bpl" -LN"C:\Users\Public\Documents\RAD Studio\6.0\Dcp" -O"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -R"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -UD:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -K00400000   ResTest.dpr   

Может быть, это трудно увидеть здесь: Разница в параметре -R:

Local Search Path -> -R"c:\program files\codegear\rad studio\6.0\Lib"
Global Search Path -> -R"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res

Так что неудивительно, почему это не работает. Локальный путь поиска не добавляется к параметру -R в Delphi 2009.

Я бы сказал, это явно ошибка, но почему, кажется, ни у кого больше нет этой проблемы? Я могу воспроизвести его на всех машинах, которые мы используем. Может быть, ошибка существует только в немецкой версии Delphi 2009?

1 Ответ

2 голосов
/ 22 апреля 2009

Обходной путь должен поместить это в ваш код вместо:

{$R res\test.res}

Это работает в моей системе с Delphi 2009, как с IDE, так и с компилятором командной строки.

Обратите внимание, что я согласен с тем, что они нарушили существующую функциональность. Вы добавили отчет в портал качества? Если нет, пожалуйста, сделайте следующее: ttps: //quality.embarcadero.com (раньше это была поисковая система с индексом http://qc.embarcadero.com, но она была закрыта; https://quality.embarcadero.com требует бесплатной учетной записи для поиска) .

...