Пакет Delphi Xe2 x64

Допустим, я создаю новый пакет в Delphi Xe2. Сохраняю под именем "Мой". Добавляю простой компонент «MyComponent». Компилирую, получаю файл Bpl в C: \ Users \ Public \ Documents \ RAD Studio \ 9.0 \ Bpl \ My.bpl.

Добавляю платформу "Win x64". Компилирую, получаю C: \ Users \ Public \ Documents \ RAD Studio \ 9.0 \ Bpl \ Win64 \ My.bpl.

... \ Bpl \ Win64 \ My.bpl установить как новый пакет не дает, пишет "это не windows x32 приложения". Первый устанавливается нормально и на палитре появляется компонент «MyComponent». Если подвести к немому, то указатель мыши появится подсказка, где будет написано, что она x32-совместима. А у нативного компонента Delphi - совершенно не x32-64 совместимый. Вместе с диском к Xe2 идет свободный диск с компонентами Free и Tral, если поставить оттуда например OverByteIcs или Ip * Works, то у них у всех компонентов будет 32-64х совместимость.

Вопросы: 1. Как установить пакет x64 версии? 2. Как добиться, чтобы компонент имел совместимость 32-64, а не только 32?

P.S. Плохой английский язык: ВКЛ.


person Gu.    schedule 01.11.2011    source источник


Ответы (2)


IDE Delphi является 32-битной, поэтому может загружать только 32-битные пакеты времени разработки. Конечно, вы можете создавать 64-битные пакеты времени выполнения.

person David Heffernan    schedule 01.11.2011
comment
Точно так же, как вы это сделали. Добавьте платформу x64, выберите платформу x64, скомпилируйте. Вы просто не можете установить цель x64 в IDE во время разработки. - person David Heffernan; 02.11.2011
comment
Вроде ясно. Т.е. Могу собрать, могу использовать этот BPL при компиляции проекта, но установить в IDE не могу? - person Gu.; 02.11.2011
comment
Это правильно. Если у вас есть компоненты, которые передают поток в .dfm, вам нужно будет создать 32-битную цель и установить ее, даже если во время выполнения вы загружаете 64-битную цель. - person David Heffernan; 02.11.2011

Заработало, разобралось!

  1. Создаем пустой пакет
  2. Добавляем компонент, например Button и указываем, какие платформы для компонента (нужен ключевой момент!)

Пример

unit GuButton;

interface

uses
  System. SysUtils, System. Classes, Vcl. Controls, Vcl. StdCtrls;

type
  [ComponentPlatformsAttribute (pidWin32 or pidWin64)] // !!!!!!!!!!!!!!!
  TButtonGu = class (TButton)
  private
    {Private declarations}
  protected
    {Protected declarations}
  public
    {Public declarations}
  published
    {Published declarations}
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents (' Gu ', [TButtonGu]);
end;

Сохраняем, компилируем под x32. Добавляем платформу x64 (в настройках должно быть прописано, что каталоги под платформами разные). Компилируем под x64. Получаем 2 BPL (как в первом вопросе). Устанавливаем x32. Смотрим - добавлен новый компонент ButtonGu - 32-64 совместимый.

Вот я то хотел, всем спасибо. Кроме того, http://docwiki.embarcadero.com/RADStudio/en/64-bit_Cross-Platform_Application_Development_for_Windows

person Gu.    schedule 01.11.2011