Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Что за... сообщение в Delphi XE2. [WinXP]


Страницы:   1 2

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, а другой описан в вызываемой библиотеке.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо