![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Что за... сообщение в Delphi XE2. [WinXP]
Deltas © (2012-02-15 01:55:00)В конструкторе класса, одно из полей которого типа FIcon: TIcon, в отладке пытаюсь просмотреть значение выражения FIcon is TIcon. Компилятор сообщает: "E2010 Incompatible types: 'Vcl.Graphics.TIcon' and 'Vcl.Graphics.TIcon'". Что бы это могло значить?...
CRLF (2012-02-15 18:53:00) [1]
> А <мой пакет>.bpl вовсе там не нужен для такой задачи.
Так задача учебная, таковы условия :-)
Deltas (2012-02-15 18:36:00) [2]Хорошо, спасибо большое
Германн (2012-02-15 18:30:00) [3]А <мой пакет>.bpl вовсе там не нужен для такой задачи.
CRLF (2012-02-15 18:28:00) [4]
> В списке runtime-пакетов можно оставить только <мой пакет>.
> bpl, чтобы rtl.bpl и vcl.bpl встроились в приложение?
Получится именно Incompatible types: 'Vcl.Graphics.TIcon' and 'Vcl.Graphics.TIcon'". В приложении Graphics.TIcon у тебя будет из вкомпиленного vcl, а у пакета -- из загружаемого vcl.bpl (обрати внимание, что у тебя фактически две копии vcl в памяти, и как ты уже заметил выше, RTTI у них разные).
Deltas (2012-02-15 18:11:00) [5]Понятно. Еще один вопрос есть. В списке runtime-пакетов можно оставить только <мой пакет>.bpl, чтобы rtl.bpl и vcl.bpl встроились в приложение? Почему там обязательно должны находиться vcl.bpl и rtl.bpl?
Германн (2012-02-15 18:08:00) [6]
> Если флажок снят, весь код пакетов встраивается в исполняемый
> файл. В чем я тут не прав?
>
Так тебе то советуют флажок поставить, а не снять!
CRLF (2012-02-15 17:55:00) [7]
> Если флажок снят, весь код пакетов встраивается в исполняемый
> файл. В чем я тут не прав?
Прав. Следовательно, чтобы динамически загружать пакет, галочка должна быть установлена? Чтобы динамически загружать пакет, этот пакет должен быть в списке "невкомпиливаемых" пакетов? Ну и rtl и vcl тоже должны быть в этом списке.
Deltas (2012-02-15 17:51:00) [8]
> Дело не в этом, а в том что по мнению автора если включить
> галку, то это будет означать "встраивать пакеты в исполняемый
> файл".
Если флажок снят, весь код пакетов встраивается в исполняемый файл. В чем я тут не прав?
CRLF (2012-02-15 17:11:00) [9]
> Это решит проблему, но цель учебной задачи не встраивать
> пакеты в исполняемый файл, а подгружать через LoadPackage
> по требованию.
И ч0?
> Если у меня 100 пакетов, но пользователь реально будет работать
> только с одним сегодня, зачем грузить в оперативную память
> 100 пакетов?
Я разве где-то такое предлагал?
Германн (2012-02-15 17:06:00) [10]
> Он не слышал, что такое виртуальная память.
Дело не в этом, а в том что по мнению автора если включить галку, то это будет означать "встраивать пакеты в исполняемый файл".
app (2012-02-15 17:01:00) [11]Он не слышал, что такое виртуальная память. И как ведется управление оперативной памятью.
Германн (2012-02-15 16:45:00) [12]
> Это решит проблему, но цель учебной задачи не встраивать
> пакеты в исполняемый файл, а подгружать через LoadPackage
> по требованию. Если у меня 100 пакетов, но пользователь
> реально будет работать только с одним сегодня, зачем грузить
> в оперативную память 100 пакетов?
Ты бы почитал бы про эту галку "Build with runtime packages". А то похоже ты её совсем неправильно понял.
Плохиш (2012-02-15 16:44:00) [13]
> Это решит проблему, но цель учебной задачи не встраивать
> пакеты в исполняемый файл, а подгружать через LoadPackage
> по требованию. Если у меня 100 пакетов, но пользователь
> реально будет работать только с одним сегодня, зачем грузить
> в оперативную память 100 пакетов?
Ещё один вместо изучения основ делает кривой велосипед...
Inovet (2012-02-15 16:35:00) [14]> [13] Deltas © (15.02.12 16:20)
> зачем грузить в оперативную память 100 пакетов?
И сам exe файл тоже не весь грузится, а по мере надобности, и выгружается за ненадобностью.
Германн (2012-02-15 16:35:00) [15]
> но цель учебной задачи не встраивать пакеты в исполняемый
> файл, а подгружать через LoadPackage по требованию.
Ну и получай тогда
> для них формируется различная RTTI.
Anatoly Podgoretsky (2012-02-15 16:32:00) [16]> Deltas (15.02.2012 16:20:13) [13]
Почему ты думаешь, что програма будет что то грузить в оперативную память,
это не ее уровень.
Deltas (2012-02-15 16:20:00) [17]
> То, что это два разных класса, один описан в вызывающем
> exe, а другой описан в вызываемой библиотеке.
Это один и тот же класс, описанный в Vcl.Graphics, который входит в пакет vcl.bpl. Но, похоже, для них формируется различная RTTI.
> А у динамически подключаемых пакетов галка тоже стоит?
У пакетов невозможно выставить эту опцию, т.к. пакеты никогда не встраиваются в другие пакеты, они их подгружают (секция Requires).
> Ну вот тебе надо поставить галку, и под ней в список runtime
> packages вписать как минимум rtl, vcl и твой пакет.
Это решит проблему, но цель учебной задачи не встраивать пакеты в исполняемый файл, а подгружать через LoadPackage по требованию. Если у меня 100 пакетов, но пользователь реально будет работать только с одним сегодня, зачем грузить в оперативную память 100 пакетов?
CRLF (2012-02-15 16:00:00) [18]
> А у динамически подключаемых пакетов галка тоже стоит?
У них такой галки нет, у них она всегда включена.
> Галка стоит. Но некоторые пакеты подключается динамически,
> через LoadPackage
Ну вот тебе надо поставить галку, и под ней в список runtime packages вписать как минимум rtl, vcl и твой пакет.
Поток (2012-02-15 15:29:00) [19]> Deltas © (15.02.12 13:47) [9]
А у динамически подключаемых пакетов галка тоже стоит?
Плохиш (2012-02-15 14:49:00) [20]
> Компилятор сообщает: "E2010 Incompatible types: 'Vcl.Graphics.
> TIcon' and 'Vcl.Graphics.TIcon'". Что бы это могло значить?
То, что это два разных класса, один описан в вызывающем exe, а другой описан в вызываемой библиотеке.