TOleServer и его модуль не доступны для Firmenkey в Delphi?

Как следует из названия, я не могу найти этот блок.

Есть ли эквивалент?

Я пытаюсь перенести модуль из VCL в Firemonkey, который содержит OleServer в его uses пункт, но я не могу найти никакой информации на веб-сайте Embarcaderos относительно этой проблемы.

Я также попытался Google это, но безуспешно.

Где я могу найти TOleServer и / или его блок OleServer что совместимо с Firemonkey?

Или как я могу реализовать этот модуль в моем проекте Firemonkey?

2 ответа

Привет, у меня такая же проблема раньше, и я внес изменения в OleServer

  1. Скопируйте Vcl.OleSever в свой проект и переименуйте его в FMX.OleServer
  2. в разделе реализации поменять вот так:

      implementation
uses
  FMX.Controls;

resourcestring
  sNoRunningObject = 'Unable to retrieve a pointer to a running object registered with OLE for %s/%s';

  1. при инициализации измените раздел на FMX.Controls.TControl

      initialization
  GroupDescendentsWith(TOleServer, FMX.Controls.TControl);
end.

  1. Наконец, переименуйте VCL.OleServer в FMX.OleServer в импортированном модуле библиотеки.

Действительно, основной проблемой при компиляции модулей TLB (typelibrary) для серверов COM/OLE, по-видимому, является некоторое переименование модулей, которое произошло. В идеале Delphi IDE должна автоматически обнаруживать это и исправлять.

На основании приведенного выше комментария Дуга Радда я исправил "использует OleServer", чтобы "использовать Vcl.OleServer" в моем блоке TLB.

Так как в папке установки Delphi есть папка "source" даже для версии Pro сейчас (по крайней мере в версии 10.2.2 Tokyo, которую я сейчас использую), я также мог легко определить (используя бесплатный инструмент GrepWin), где "EmptyParam" это привело к тому, что мой TLB не скомпилировался. Он находится под модулем System.Variants, который также необходимо использовать в их TLB (до того, как он был в System, поэтому вам не нужно было использовать какой-то модуль для него).

Полагаю, я мог бы снова импортировать сервер COM/OLE, чтобы создать новый модуль импорта TLB, но так как он был ручным (чтобы удалить использование модулей "Graphics", "StdVcl" и "OleCtrls", которые увеличивали размер исполняемого файла в более старых версиях) версий Delphi) и того, что вручную отредактированный импортированный TLB работал нормально для приложения командной строки, у меня не было никаких причин для повторного импорта библиотеки типов.

Вы можете увидеть изменения, которые я сделал, чтобы мой инструмент XSLer работал с последней версией Delphi, по адресу https://github.com/Zoomicon/tranXform/commit/e99f42049b8a4c1534d9edb78ed5e6493e6e5786. Этот инструмент командной строки XSLer использует сервер автоматизации MSXML (Microsoft XML).

Другие вопросы по тегам