Cómo agregar una plataforma de destino a un proyecto Delphi a través de la API de OpenTools

StackOverflow https://stackoverflow.com//questions/21023537

Pregunta

En Delphi (XE2 hasta XE5), ¿cómo se puede agregar programáticamente una plataforma objetivo a un proyecto?

por "programáticamente", me refiero a través de la API de OpenTools, a diferencia de una transformación del archivo .dproj.Esto se debe hacer dentro de un asistente de IDE / experto.

He mirado la unidad Toachsapi, y aparece que puede obtener la plataforma activa, y la lista de plataformas compatibles, pero no hay nada obvio para agregar una nueva plataforma de destino.

¿Fue útil?

Solución

Parece que esto es posible.La unidad que necesita para mirar es PlatformAPI.La interfaz que tiene lo que necesita es:

  { Provides information on platform-specific information held by a project }
  IOTAProjectPlatforms160 = interface(IInterface)
    ['{E1C62726-BD51-4D4E-A2F2-9A8A59F272AE}']
    { Add an available platform to the project }
    procedure AddPlatform(const PlatformName: string);
    { Return the currently active platform key }
    function CurrentPlatform: string;
    { Return enabled state of the requested platform }
    function GetEnabled(const PlatformName: string): Boolean;
    { Return an array of strings representing the enabled platforms for a project }
    function GetEnabledPlatforms: TArray<string>;
    { Return the profile name associated with the specified platform }
    function GetProfile(const PlatformName: string): string;
    { Does the project support platform specified by PlatformName? }
    function GetSupported(const PlatformName: string): Boolean;
    { Return an array of strings representing the valid platforms for a project }
    function GetSupportedPlatforms: TArray<string>;
    { Set a platform as disabled for this project (cannot be made active) }
    procedure SetEnabled(const PlatformName: string; Value: Boolean);
    { Set the profile name for the specified platform. Pass an empty string to
      clear the profile }
    procedure SetProfile(const PlatformName, ProfileName: string);
    { Indicate the specified platform is supported or not }
    procedure SetSupported(const PlatformName: string; Value: Boolean);
    { Return whether or not the profile associated with PlatformName is the default profile
      for that platform }
    function UsingDefaultProfile(const PlatformName: string): Boolean;

    property EnabledPlatforms: TArray<string> read GetEnabledPlatforms;
    property Enabled[const PlatformName: string]: Boolean read GetEnabled write SetEnabled;
    property Profile[const PlatformName: string]: string read GetProfile write SetProfile;
    property Supported[const PlatformName: string]: Boolean read GetSupported write SetSupported;
    property SupportedPlatforms: TArray<string> read GetSupportedPlatforms;
  end;

El método AddPlatform parece ser su tipo.

Tenga en cuenta que no he intentado llamar al método.De hecho, todo lo que hice fue la búsqueda de la palabra plataforma en la carpeta de origen de Herramientas API.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top