![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка «Duplicate resource»
Kolan © (2009-04-08 11:42:00)Здравствуйте!
Не могу понять в чем дело. При компиляции компилятор (D2007) выдает ошибку, а точнее две:
[DCC Error] E2161 Warning: Duplicate resource: Type 14 (ICON GROUP), ID MAINICON; File D:\MyWork\Delphi\KFreGrafWorkingCopy\SoftWare\Source\KFreGrafMainForm\KFreGraf.r es resource kept; file D:\MyWork\Delphi\KFreGrafWorkingCopy\SoftWare\Source\KFreGrafMainForm\KFreGraf.r es resource discarded.
[DCC Error] E2161 Warning: Duplicate resource: Type 16 (VERSIONINFO), ID 1; File D:\MyWork\Delphi\KFreGrafWorkingCopy\SoftWare\Source\KFreGrafMainForm\KFreGraf.r es resource kept; file D:\MyWork\Delphi\KFreGrafWorkingCopy\SoftWare\Source\KFreGrafMainForm\KFreGraf.r es resource discarded.
Странность в том, что, во-первых, как обычно, раньше все работало, во-вторых, с ресурсами я никаких манипуляций в коде не делаю.
Да и ошибка какая-то дурацкая. С одной стороны файлKFreGraf.reskept, а с другой (он же) — discarded. Как так?
Более того, если совсем удалитьKFreGraf.resи сделать билд, то все равно ошибка возникает.
Если в менюProject → Options → Version Infoубрать галочкуInclude version information in project, то вторая ошибка (VERSIONINFO) исчезает.
Код dpr такой:
program KFreGraf;
uses
Forms,
...
{$R *.res}
begin
Application.Initialize;
Application.Title := 'KFreGraf';
Application.HelpFile := 'E:\MyWork\Delphi\KFreGrafProject\SoftWare\Source\Binary\Help\KFreGrafHelp.hlp';
Application.CreateForm(TMainForm, MainForm);
...
Application.CreateForm(TModelBuilderForm, ModelBuilderForm);
Application.Run;
end.
Еще (вдруг это важно), раньше у меня в этом проекте было куча БПЛ-пакетов. И в один прекрасный момент при открытии (именно при открытии в среде) всей этой группы с проектов стало появляться сообщение про Duplicate resource, но в виде простого модального окна. Окно с сообщением об ошибки закрывалось, и проект компилировался нормально.
Сейчас я убрал все пакеты и, возможно, это та самая старая проблема, которая была с пакетами.
Итого
1. Что за дурацкая формулировка ошибки, что это значит?
2. Почему возникает ошибка?
3. Как избавиться от ошибки?
Игорь Шевченко (2009-04-08 17:40:00) [1]
> Ну вот, а то все стьюпидити, да стьюпидити :)
а ты не только на свой счет принимай, мало ли у кого stupidity, пиши в Codegear, заодно узнаешь
Kolan (2009-04-08 16:00:00) [2]Ну вот, а то все стьюпидити, да стьюпидити :)
Игорь Шевченко (2009-04-08 15:43:00) [3]
>
> Эта запись ...t.pas' {$R *.res}, там уже была. Руками её
> туда никто не вставлял.
напиши комплейн в Codegear
Kolan (2009-04-08 15:37:00) [4]Так я их и не дублировал. С чего вы это взяли?
Эта запись...t.pas' {$R *.res},там уже была. Руками её туда никто не вставлял.
Anatoly Podgoretsky (2009-04-08 15:28:00) [5]> Kolan (08.04.2009 15:16:19) [19]
Ты все никак не можешь понять, что эти ресурсы делает компилятор и не надо их дублировать, плохо кончится, точь в точь как у тебя.
Kolan (2009-04-08 15:16:00) [6]А если я скажу, что руками dpr не трогал, то можно будет attribute?
Anatoly Podgoretsky (2009-04-08 14:32:00) [7]Kolan © (08.04.09 13:55) [16]
Правильно добавляет, неправильно добавляешь ты - нафига предопределеные ресурсы добавляешь?
Игорь Шевченко (2009-04-08 14:31:00) [8]
> Я думаю, что это Делфи неверно добавил модули в юзис дпр'а
> новый модуль
Never attribute to malice which can be adequately explained by stupidity
Kolan (2009-04-08 13:55:00) [9]Я думаю, что это Делфи неверно добавил модули в юзис дпр'а новый модуль. Видимо он {$R *.res} забыл сдвинуть вниз, дописав новый модуль после запятой и добавив новый {$R *.res}.
Anatoly Podgoretsky (2009-04-08 13:46:00) [10]Конечно помогло, ведь ты удалил дубли ресурсов, но может кроме дублей ты удалил и что ни будь нужное.
Kolan (2009-04-08 13:37:00) [11]*.rc тоже нет, а
KFreGrafStartUpColleagueUnit in '..\KFreGrafStartUpColleague\KFreGrafStartUpColleagueUnit.pas' {$R *.res},
я удалил и помогло.
brother (2009-04-08 13:19:00) [12][10] я о другом, ну да ладно)
Anatoly Podgoretsky (2009-04-08 13:10:00) [13]> Игорь Шевченко (08.04.2009 12:56:08) [8]
Я даже думаю, что ты не добавлял.
Anatoly Podgoretsky (2009-04-08 13:09:00) [14]> Kolan (08.04.2009 13:02:09) [9]
не .r а .rc
И строку в .dpr не трожь.
Anatoly Podgoretsky (2009-04-08 13:07:00) [15]> brother (08.04.2009 12:24:05) [5]
Вот это самое оно не стоит трогать, да и бесполезно, а удалять надо из указаного файла.
Тоже мне надумал, давать ресурсами зарезервированые имена.
Kolan (2009-04-08 13:02:00) [16]
> искать в файлах *.pas строки {$R имя_ресурса
Сделал поиск во всех файлах проекта{$R. И оказалось, что в dpr, в юзисах написано:
KROMBuilderHistoryManager in '..\KFreGrafSimpleReportColleague\KROMBuilderHistoryManager.pas',
KFreGrafStartUpController in '..\KFreGrafStartUpColleague\KFreGrafStartUpController.pas',
KFreGrafStartUpColleagueUnit in '..\KFreGrafStartUpColleague\KFreGrafStartUpColleagueUnit.pas'{$R *.res},
KFreGrafSystemControllers in '..\KFreGrafSystemControllerColleague\KFreGrafSystemControllers.pas',
KFreGrafDeviceAddForm in '..\KFreGrafSystemControllerColleague\KFreGrafDeviceAddForm.pas' {DeviceAddForm},
...
KFreGrafModelBuilderColleagueUnit in '..\KFreGrafModelBuilderColleague\KFreGrafModelBuilderColleagueUnit.pas',
KFreGrafROMBurnColleagueUnit in '..\KFreGrafROMBurnColleague\KFreGrafROMBurnColleagueUnit.pas';
{$R *.res}
Как оно туда затисалось — не знаю, но думаю, что это Делфи сам...
Благодарю — скомпилилось.
Анатолий, а KFreGraf.r и вообще *.r-файлов в коде проекта нет.
Игорь Шевченко (2009-04-08 12:56:00) [17]Anatoly Podgoretsky © (08.04.09 12:28) [6]
Мне ничего не надо убирать, я уже все убрал :)
Anatoly Podgoretsky (2009-04-08 12:28:00) [18]> Kolan (08.04.2009 12:08:02) [2]
Из KFreGraf.r они взялись.
Anatoly Podgoretsky (2009-04-08 12:28:00) [19]> Игорь Шевченко (08.04.2009 12:03:01) [1]
Убирать надо файл KFreGraf.r - ну или как минимум эти два ресурса из него.
brother (2009-04-08 12:24:00) [20]> MAINICON
ищи pas, где вероятнее всего может быть res c MAINICON
зы [4] самое оно ;)